Cómo funciona la localización en Netflix - traducción

Hola Habr! Le presento la traducción del material "Tecnologías de localización en Netflix" escrito por el equipo de Netflix sobre los procesos y programas de localización internos diseñados específicamente para esto.

imagen

El programa de localización en Netflix se basa en tres principios: lingüística impecable, una atmósfera armoniosa en el equipo y tecnologías avanzadas.

No tenemos miedo de experimentar y probar nuevos procesos y herramientas, para oponernos a las normas generalmente aceptadas en la localización, ¡gracias a esto hemos llegado tan lejos! Trabajar en Netflix significa ser pionero.

En este artículo, hablamos de dos tecnologías que nos llevarán a la dominación MUNDIAL ... Más bajo el corte.

Repositorio global de cadenas de Netflix


Netflix no tuvo éxito porque creamos contenido de calidad, sino porque entregamos ese contenido. La mayor parte del éxito es una interfaz de usuario (UI) intuitiva, fácil de usar y localizada. Netflix está disponible en diferentes plataformas: la versión web, Apple iOS, Google Android, Sony PlayStation, Microsoft Xbox, televisores Sony, Panasonic, etc. Cada una de estas plataformas tiene sus propios requisitos para la internalización, lo cual es un serio desafío para nuestro equipo.

Estos son algunos ejemplos en los que se requiere la localización de la interfaz de usuario:

  • agregar nuevo idioma
  • agregando nuevas características
  • cambios a textos y datos existentes

La traducción de texto para UI no es un proceso automatizado; Durante la traducción, los gerentes de localización trabajan junto con el equipo de desarrollo para comprender claramente a qué pertenece esta o aquella línea, a qué idiomas debe traducirse y a qué hora deben proporcionarse los archivos localizados. Se vuelve mucho más complicado cuando varias características se desarrollan en paralelo y se ejecutan en diferentes ramas de Git.

Una vez completada la traducción, la aplicación se ensambla, se prueba y se coloca en la plataforma. Algunos dispositivos requieren confirmación de terceros (por ejemplo, de Apple). Todo esto provoca un retraso indeseable en los plazos. Especialmente desagradables son los casos de cambios de emergencia.

Pero, ¿qué sucede si hacemos que el proceso de localización esté abierto a todos los interesados, tanto para el equipo de desarrollo como para los localizadores? ¿Qué sucede si ya no necesitamos reconstruir las compilaciones cada vez que hacemos cambios en el texto?

Para resolver estos problemas, desarrollamos un repositorio de cadenas de interfaz de usuario global llamado Global String Repository; Las cadenas localizadas se almacenan aquí, que se sustituyen en el entorno para la ejecución del código. Integramos el repositorio global de cadenas en el proceso de localización, para que se complementen entre sí.

Global String Repository separa los paquetes de localización y el espacio de nombres (marcadores de posición). El paquete de localización almacena todos los datos línea por línea en todos los idiomas. Los marcadores de posición son marcadores de posición para paquetes en los que el equipo está trabajando. Durante el desarrollo, se utilizan marcadores de posición estándar. El flujo de trabajo se ve así:

  1. El desarrollador realiza cambios en la versión en inglés de la cadena en el paquete (en el espacio de nombres de marcador de posición)
  2. El proceso de traducción comienza automáticamente.
  3. Los lingüistas completan la traducción
  4. Los traductores ponen a disposición kits de marcadores de posición

Cuando se produce la integración con el depósito de cadenas global, hay dos tipos de comportamiento de la aplicación:

  • En tiempo de ejecución: le permite realizar cambios rápidamente en la interfaz de usuario
  • Durante el ensamblaje: uso del repositorio global de cadenas por separado para la localización y paquetes de datos con el ensamblaje (compilación)

El depósito global de cadenas permite la integración durante la fase de construcción al proporcionar acceso a datos localizados a través de la API REST.

Abrimos el repositorio global de cadenas a través de la API de Netflix, por lo que se aplican los mismos requisitos y escala que los metadatos de otras API. Para las aplicaciones que se integran en tiempo de ejecución, esta es una parte crítica. Tenemos 60 millones de usuarios que ejecutan Netflix en diferentes dispositivos, por lo que el depósito global de cadenas es una prioridad.

Al igual que Netflix, el depósito global de cadenas tiene una arquitectura de microservicio. Microservice es una aplicación web Java (implementada en Apache Cassandra y ElasticSearch) que está alojada en tres regiones de AWS. Recopilamos estadísticas para cada solicitud de API.

La interfaz del repositorio de cadenas globales está desarrollada en Node.js, Bootstrap y Backbone y está alojada en AWS.

En el lado del usuario, el depósito de cadenas globales utiliza la API REST para recuperar datos y ofrece un cliente Java con almacenamiento en caché incorporado.

A pesar de que hemos recorrido un largo camino y estamos desarrollando activamente el Depósito Global de Cadenas, tenemos algo por lo que luchar. Esto es en lo que estamos trabajando ahora:

  • Desarrollamos soporte para cadenas con variables numéricas y cadenas con identificadores de género.
  • Desarrollamos la solidez de nuestras soluciones técnicas.
  • Mejorando los procesos de escalado
  • Admitimos la exportación a diferentes formatos (Android XML, Microsoft .Resx, etc.)

El depósito global de cadenas no está vinculado al dominio comercial de Netflix, por lo que planeamos lanzarlo como software de código abierto.

Hidra


Netflix: un servicio global que admite muchas configuraciones regionales en una miríada de combinaciones diferentes en diferentes dispositivos / IU; Las pruebas manuales no son apropiadas en este caso. Anteriormente, el equipo de localizadores y desarrolladores de UI probó todo manualmente en diferentes dispositivos, desde consolas hasta iOS y Android; así es como verificamos el cumplimiento de todas las líneas con el contexto y la interfaz de usuario (por ejemplo, si hubo algún "recorte" del texto).

Pero la filosofía de Netflix es que nos esforzamos por la excelencia. Este enfoque nos permite repensar lo que estamos haciendo. Así nació Hydra.

La tarea de Hydra es crear un catálogo de todas las opciones posibles para una pantalla única que muestre exactamente la pantalla que se requiere (la búsqueda se realiza mediante filtros, por ejemplo, puede seleccionar un dispositivo y configuraciones regionales). Por ejemplo, como especialista en localización alemana, puede configurar el filtrado para que pueda ver la ruta completa que siguen los usuarios no registrados en la PS3, el sitio web y Android. Las mismas pantallas se pueden ver al ritmo al que el usuario las abrirá en su dispositivo.

Trabajando con pantallas en Hydra


Hydra no funciona con pantallas directamente; sirve para catalogarlos y exhibirlos. Para tomar una visualización en pantalla del catálogo de Hydra, utilizamos nuestro modelo de automatización de UI. Con Jenkins CI, las pruebas basadas en datos se ejecutan en paralelo en todas las configuraciones regionales compatibles: esto crea capturas de pantalla que se publican en Hydra con los metadatos apropiados (nombre de página, área de función, plataforma de interfaz de usuario y una pieza crítica de metadatos, una definición única en pantalla).

Es necesaria una definición de pantalla única para compilar un catálogo completo de pantallas sin coincidencias falsas. Esto le permite comparar un mayor número de pantallas a largo plazo, ya que la imagen de cada pantalla se compara con sí misma. La definición de una pantalla única difiere de UI a UI; para un navegador, esta es una combinación del nombre de la página, el navegador, la resolución, el entorno local y el entorno de desarrollo.

Tecnología


Hydra es una aplicación web de pila completa de AWS. El back-end de Java tiene dos funciones principales: procesa capturas de pantalla entrantes y proporciona datos para el back-end a través de la API REST.

imagen

Cuando la automatización de la interfaz de usuario envía la pantalla a Hydra, el archivo de imagen en sí se escribe en S3, lo que garantiza su almacenamiento infinito (más o menos), y se escriben metadatos mucho más pequeños en la base de datos RDS, para que luego se pueda solicitar a través de la API REST. Los puntos finales REST (puntos finales REST) ​​muestran parámetros de cadena de consulta para consultas MySQL.

Por ejemplo:

REST/v1/lists/distinctList?item=feature&selectors=uigroup,TVUI;area,signupwizard;locale,da-DK

Esta solicitud contiene parámetros para seleccionar los datos necesarios de la Base de datos:

select distinct feature where uigroup = 'TVUI' AND area = 'signupwizard' AND locale = 'da-DK'

El front-end de JavaScript, que usa knockout.js, permite a los usuarios seleccionar filtros y ver pantallas que coincidan con esos filtros. Las llamadas a los puntos finales REST mencionados anteriormente proporcionan el contenido de los filtros, así como las pantallas que corresponden a los filtros seleccionados.

Escalado de aplicaciones


Después de instalar Hydra e iniciar la automatización, agregar nuevas configuraciones regionales es tan fácil como agregar una línea a un archivo de propiedades existente, que se envía al proveedor de datos del marco de prueba de GN. Las pantallas con una nueva configuración regional se mostrarán con las siguientes compilaciones de trabajo de Jenkins.

Que sigue


Necesitamos implementar una función que notifique que la pantalla ha cambiado. Por el momento, si la línea cambia, no hay nada que notifique automáticamente sobre esto. Hydra puede convertirse en una cola más o menos funcional, y luego los expertos en localización podrán iniciar sesión en el sistema y ver solo un conjunto específico de pantallas que han cambiado.

Otra característica es la capacidad de asignar líneas individuales de teclas a las pantallas que desea mostrar. Esto permitirá que el traductor cambie la línea y luego realice una búsqueda clave y vea las pantallas afectadas por este cambio; para que el traductor vea de antemano cómo cambia esta línea de contexto.

No tenemos miedo de resolver problemas complejos. Netflix se convertirá en un servicio global y nuestro equipo de localización se expandirá. Dichos desafíos nos permiten atraer a las personas más talentosas, y creamos un equipo que puede hacer lo que se considera imposible.

Source: https://habr.com/ru/post/453456/


All Articles