Consejos Pro de Selligent: Optimizar las traducciones en Selligent

Eva Maria Schmidt
junio 20, 2016

En la primera parte de nuestra serie de Consejos Pro de Selligent, Andy Somers de la empresa Foreach, partner de Selligent, comparte sus consejos sobre cómo mantener las traducciones sincronizadas en ambientes diversos.

La situación

La mayoría de los clientes implementan sólo uno de los sistemas de Selligent, por lo general SAAS. En lo que respecta a las traducciones en diferentes idiomas, se aplica el siguiente namespace: La aplicación A tiene tres namespaces – “Application A Dev”, “Application A STG” y “Application A PRD”. La aplicación B tiene tres namespaces y así en adelante.

Andy Somers dice: “desde que nuestros clientes tienen acceso a las herramientas de Selligent y pueden cambiar las traducciones a través de la herramienta estándar de traducción, hemos acabado con las discrepancias muy rápido”.

Esta es la vista de la herramienta de traducción estándar de Selligent:

label editor

Andy Somers comenta: “como puedes ver, esta herramienta ofrece poco en cuanto a la comparación de namespaces se refiere, o respecto al mapping de las label keys en el lugar correspondiente de la pantalla.

El método antiguo

Como alternativa, en Foreach probaron las siguientes soluciones provisionales: “originalmente, con cada implementación, comparamos namespaces manualmente (y sólo modificábamos aquellas traducciones modificadas o añadidas). Según aumentaba nuestro entendimiento del sistema de traducción, escribimos statements SQL para ayudarnos, pero la mayoría del trabajo era manual. Y como todos sabemos, el trabajo manual es tedioso y propenso a errores”.

Después de dedicarse a llevar a cabo un análisis profundo de errores, Andy Somers, y sus compañeros, descubrieron que: “resulta que la causa principal era humana. Cometimos demasiados errores durante la comparación manual”.

Como resultado, el método manual resultó ser frustrante tanto para los clientes como para los expertos de Foreach. Era el momento de una solución mejor…

Mejoras principales

En base a la programación anterior, el equipo se puso a trabajar en: “la creación de una solución que nos permitiera copiar los cambios entre namespaces de forma automática. Pusimos los SQL statements que teníamos previamente en un par de procedimientos almacenados”.

Combinado con una campaña de Selligent y una página, los statements SQL devolvieron los siguientes resultados:

Copy changes

De forma predeterminada, la herramienta puede copiar los valores de un namespace de origen, a un namespace de destino, sobrescribiendo los valores existentes, sin tener en cuenta los valores con un cambio de fecha más reciente. De esta manera, se garantiza que las traducciones más actualizadas se mantengan. La herramienta también añadirá traducciones nuevas en el namespace de destino si no existieran previamente.

El método hace, también, que estén disponibles dos opciones “avanzadas”:

1. Pegar y sustituir los valores del namespace de destino (sobrescribir con todo el namespace)

2. Forzar el sobrescribir los cambios, que ignora la fecha de cambio de los valores del namespace de destino.

Pero en la práctica diaria, “no utilizamos estas opciones a menudo, aunque son útiles de vez en cuando”, dijo Foreach.

La nueva manera

La nueva y mejorada implementación desde el staging a la producción sigue este procedimiento:

1. Seleccionar el namespace de producción como origen y el namespace de staging como destino.

2. Copiar los valores.

3. Seleccionar el namespace de staging como namespace de origen y el namespace de producción como destino.

4. Copiar los valores.

Como Andy Somers explica: “esto causa que los dos namespaces contengan los mismos valores. Lo ideal es que la producción también se copie en el desarrollo.

TRABAJANDO CON EL MÉTODO NUEVO

Los siguientes consejos Pro sobre el método de sincronización muestran cómo puedes optimizar tu proceso de traducción.

Comienza aquí:

El código de los procesos almacenados y el HTML los puedes encontrar aquí, en el servidor de Foreach como un Git snippet.

1. Listados

Ya que las tablas del sistema no están representadas en forma de listados, la primera tarea será crear estos listados para luego utilizarlos en tus páginas y tus campañas. Estos listados se basan en tablas existentes: “labels” y “namespaces”.

Crea una lista de datos para la tabla de labels, y un listado de artículos para los namespaces, ya que queremos utilizarlos en la página. En nuestro ejemplo, estas se llaman “templabels” y “temparticlenamespaces” respectivamente.

2. Procesos almacenados

Copia el código de los archivos SQL del Git snippet y crea dos procesos almacenados: SP_COPY_LABELS y SP_DROP_LABELS.

3. Páginas

Crea dos páginas nuevas con el código. La primera página contiene la funcionalidad para mostrar dos listas desplegables con los namespaces. Añade un artículo que se llame NAMESPACES que apunte a la lista de artículos “temparticlenamespaces”, desactivando todas las casillas.

Pages

Después, añade un filtro nuevo que se llame ALL a dicho artículo y añade un ID (ASC).

Second page

Nota: La segunda página es la que muestra el “OK”.

4. La campaña

En el paso final es cuando lo secuenciamos todo en la campaña.

Crea una campaña individual que se lance sólo una vez y utiliza la lista “templabels” del listado base.

Como primer paso, añade un enlace de página nuevo al principio y la página de labels. El siguiente ítem en el flow será un componente de toma de decisión para comprobar si los namespaces de destino deben descartar todos los valores o no.

Campaign

El “no” deriva al proceso almacenado “SP_COPY_LABELS”, el “si” deriva al proceso almacenado “SP_DROP_LABELS”. El exit flow del SP_DROP_LABELS deriva al SP_COPY_LABELS. Este último ítem, es la página de “OK”.

El flow debería ser algo como esto:

Flow

Los dos procesos almacenados requieren parámetros manuales, que se configuran así:

Copy labels

Copy labels

Drop labels

Drop labels

Ponte en marcha

Abre el enlace de la página y dirígete a la URL generada, ahora ya podrás utilizar la herramienta.

Advertencias y exenciones

Acuérdate de que esta herramienta realiza los cambios en las tablas de labels de Selligent. Es una tabla del sistema, lo que significa que la estructura y/o el contenido de esta tabla quizás cambie en el futuro, sin previo aviso. Ten cuidado cuando escribas procesos almacenados en este tipo de tablas, ya que podrías romper el sistema.

Recuerda también que no hay manera de recuperar traducciones antiguas una vez las hayas sobrescrito.

Conclusión

Una vez que hayas implementado esta solución de forma correcta, verás que mantener las traducciones sincronizadas entre namespaces estará chupado.