Globalizando Nuestras Aplicaciones en APEX 5.0 - Parte I

Por Clarisa Maman Orfali Oracle ACE
Publicado en Mayo 2016

En un mundo globalizado como en el que vivimos hoy en día es muy importante considerar el acceso multilenguaje a nuestras aplicaciones desarrolladas en APEX, ya que si nuestra aplicación se encuentra corriendo en la web es muy probable que personas de distintos lugares del mundo quieran visitar nuestra aplicación y es por ello que en este artículo aprenderemos a utilizar la funcionalidad de “Traducir Aplicación” que nos ofrece APEX para concretar esta tarea y disponer de la funcionalidad de multilenguaje en nuestras aplicaciones web.

Crear una Aplicación

Para llevar a cabo este aprendizaje, vamos a crear una aplicación de tipo Escritorio que la llamaremos “Demo App Global”, en la cual vamos a agregar una página de tipo “Informe y Pantalla” de la tabla EMP y le indicaremos que sea de tipo Informe Clásico y otra página de tipo  “Informe y Pantalla” de la tabla DEPT que de igual forma le indicamos que sea de tipo Informe Clásico. En total nuestra aplicación tendrá 5 páginas: 4 referentes a las tablas EMP y DEPT y 1 página de Conexión.

Cuando ejecutamos la aplicación podemos ver que se ejecuta según el idioma determinado, que en mi caso es el idioma Español.

Para que nuestra aplicación pueda manejar múltiples lenguajes necesitamos prepararla para la traducción y para ello necesitamos configurar la forma en que APEX determina el lenguaje de traducción.

Desde la página de inicio de la aplicación, hacemos clic en el botón “Editar Propiedades de la Aplicación

Hacemos clic en la ficha “Globalización” y configuramos que el:

Idioma de Aplicación Derivado de: Sesión

Tenemos diferentes opciones de configuración para este atributo, el cual especifica la forma en que APEX obtiene el idioma de la aplicación traducida. El idioma primario de la aplicación puede ser estático, derivado del idioma del navegador web o se puede determinar a partir de un elemento o de una preferencia del usuario.

Las opciones disponibles incluyen las siguientes:

  • Sin NLS (Aplicación no traducida): seleccionamos esta opción si no vamos a traducir la aplicación.
  • Usar Idioma Primario de la Aplicación: se determina el idioma de la aplicación traducida según el atributo Idioma Primario de la Aplicación.
  • Explorador (usar preferencia de idioma de explorador): se determina el idioma de la aplicación traducida según el idioma del navegador web del usuario.
  • Preferencia de Aplicación (usar FSP_LANGUAGE_PREFERENCE): se determina el idioma de la aplicación traducida basado en un valor definido usando la API APEX_UTIL.SET_PREFERENCE. Esta opción puede ser usada para mantener las preferencias de lenguaje del usuario a través de múltiples conexiones.
  • Preferencia de Elemento (usar elemento que contenga la preferencia): se determina el idioma de la aplicación traducida según un elemento de nivel de aplicación denominado FSP_LANGUAGE_PREFERENCE. Usando esta opción se requiere que APEX determine la preferencia de idioma adecuada en cada conexión del usuario.
  • Sesión: se determina el idioma de la aplicación traducida a partir del valor de sesión. El idioma de sesión de APEX se puede definir mediante el procedimiento APEX_UTIL.SET_SESSION_LANG o con el parámetro P_LANG del procedimiento F en la URL. (esto hace referencia a la sintaxis de la URL de APEX)

Muy bien, hasta este punto sólo hemos indicado a APEX que determine la traducción de la aplicación desde la configuración de sesión.

Para obtener el valor de sesión usamos el API APEX_UTIL.GET_SESSION_LANG o podemos usar la variable BROWSER_LANGUAGE.

Para resetear el valor de sesión del lenguaje podemos usar APEX_UTIL.RESET_SESSION_LANG, estas APIs pueden ser usadas en procesos de aplicación o en paquetes y procedimientos de la base de datos.

Antes de mostrar nuestra aplicación en otro idioma necesitamos crear las traducciones de las páginas.

Traducir nuestra aplicación usando los Archivos XLIFF

El formato de archivos XLIFF significa: XML Localization Interchange File Format, es un archivo de formato XML estándar internacional que ha sido adoptado por APEX como el formato con el cual se puede exportar e importar archivos de diferentes lenguajes dentro de las aplicaciones en APEX.

En esta sección veremos cómo utilizar la funcionalidad de traducción que nos brinda APEX, para ello volvemos a la página de inicio de la aplicación:

  • Hacemos clic en “Componentes Compartidos”
  • En la sección “Globalización”, hacemos clic en “Traducir Aplicación”

Se presenta la Página de Traducción con 6 pasos que debemos realizar para poder tener nuestra aplicación traducida.


Proceso de Traducción en APEX

Paso 1: Definir Idioma de la Aplicación
Lo primero que necesitamos hacer es indicar o definir los idiomas en la Aplicación, para este ejemplo tendremos el idioma principal Español y traduciremos la aplicación a Ingles.

Para ello hacemos clic en el primer enlace: Definir Idiomas de la Aplicación

  • Hacemos clic en el botón Crear
  • Aplicación de Traducción: ingresamos un ID para la aplicación que no esté usado en nuestro entorno de trabajo. Una consideración es que el ID de traducción no debe terminar en cero.
  • Idioma: seleccionamos el idioma que queremos traducir, en mi caso voy a elegir Inglés (en)
  • Indicamos el directorio de imágenes de la aplicación, el cual todas las imágenes de la aplicación deberán estar en ese directorio lógico.

  • Hacemos clic en el botón Crear

Regresamos a la página de traducción, haciendo clic en el enlace “Traducir” de la Ruta de Navegación.

Paso 2: Extraer Texto Traducible

Pasamos al siguiente paso y hacemos clic en el enlace “Extraer Texto Traducible”

Extraer: Al extraer la traducción, se copia todo el texto traducible en el repositorio de textos de traducción. Tras extraer el texto traducido, podemos comenzar el proceso de traducción de las cadenas de texto.

Seleccionamos la casilla de control de la aplicación del idioma recién creada y hacemos clic en el botón Extraer.

Los datos creados durante el proceso de extracción es parte de la metadata de traducciones de APEX y sólo pueden ser cambiados vía el proceso de traducción. Todas estas entradas creadas en el repositorio de APEX serán usadas más adelante para generar los archivos XLIFF.

Paso 3: Descargar archivos de traducción XLIFF

Volvemos nuevamente a la página de Traducir y hacemos clic en el link “Descargar archivos de traducción XLIFF”

Tenemos la posibilidad de exportar el archivo completo XLIFF de la aplicación o descargar los archivos por páginas.

Si generamos el archivo completo hacemos clic en el botón azul “Exportar Archivo XLIFF para Aplicación” y lo guardamos en nuestra PC para después mandarlo a traducir por algún servicio de traducción.

En el otro caso si queremos descargar los archivos por página usamos el segundo recuadro de configuración. Como ejemplo vamos a descargar la página de conexión para visualizar el archivo XLIFF y poder editarlo.

f110_112_p101_es_en.xlf
f110 = la aplicación primaria
_112 = la aplicación traducida
_p101 = página de conexión
_es = idioma español
_en = idioma ingles

Abrimos el archivo con un editor de texto.

Aquí podemos editar el archivo colocando en las etiquetas <target> … </target> la traducción de las cadenas de texto.

En la imagen de abajo podemos ver el archivo editado y remarcado en un recuadro rojo donde se muestra el origen del idioma del archivo que es el español y el objetivo es llevarlo al idioma inglés.

Guardamos el archivo f110_112_p101_es_en.xlf en nuestro sistema de archivos de nuestra PC.

Paso 4: Traducir Texto

Volvemos nuevamente a la página de Traducir y hacemos clic en el link “Traducir Texto”

Se muestra la siguiente pantalla:

El cual nos indica que normalmente, las traducciones se llevan a cabo mediante un servicio de traducción profesional. Se envía a traducir el archivo XLIFF a una empresa externa y, a continuación, se integran los archivos de traducción resultantes y se publican las aplicaciones traducidas.

También podemos editar el archivo XLIFF personalmente, o bien podemos ignorar la generación XLIFF y cargarlos todos juntos y editar el repositorio de traducción directamente.

Más adelante vamos a ver cómo realizar traducciones manualmente desde el repositorio de traducción de APEX.

La forma más práctica para traducir toda una aplicación es usando los archivos XLIFF ya que son un formato estándar internacional que pueden ser manejados por cualquier servicio de traducción.

Veamos el desglose del archivo f110_112_p101_es_en.xlf.

Todos los archivos XLIFF tienen el mismo formato: un encabezado (header) y un cuerpo (body), dentro del encabezado esta la información del archivo, como la información de la versión usada en los archivos xliff, si bien la última versión disponible es la 2, APEX utiliza la versión 1.0 por defecto y además se muestra información sobre el origen del idioma y el objetivo de traducción. Después se muestra el cuerpo del archivo donde básicamente se divide en bloques repetitivos entre las etiquetas <trans-unit>…</trans-unit> donde cada bloque es una cadena de texto a traducir.

Paso 5: Aplicar Archivos de Traducción XLIFF

Volvemos nuevamente a la página de Traducir y hacemos clic en el link “Aplicar Archivos de Traducción XLIFF”.

Este paso nos permite cargar el archivo de texto traducido y luego que sea aplicado en el repositorio  de traducción.

Hacemos clic en el botón Cargar Archivo y seleccionamos el archivo que hemos modificado.

Luego hacemos clic en el botón Cargar.

Seleccionamos el archivo activando la casilla de control y en la columna “Aplicar a Traducción” seleccionamos 110 >> 112 y luego hacemos clic en el botón Aplicar Selección.

Volvemos a seleccionar el archivo y aplicar a traducción 110 >> 112 pero esta vez hacemos clic en el botón Publicar.

Todos los textos traducidos están guardados en el repositorio de traducciones de APEX, podemos ver dichos textos usando la utilidad Repositorio de Traducción.

Repositorio de Traducción

El repositorio de traducción nos permite ver los textos traducidos y además nos permite editar manualmente el texto traducido.

Desde la Página de Traducción, nos desplazamos hasta “Utilidades de Traducción” y hacemos clic en el enlace “Repositorio de Traducción”.

Nos muestra un Informe Interactivo al cual vamos a filtrarlo para que nos muestre los textos de la Página de Conexión 101.

En la columna Traducir de muestra el texto original y en la columna Traducir a muestra el texto traducido, que en nuestro caso está en inglés.

De igual modo podemos recorrer todo el Informe Interactivo y editar cada cadena de texto introduciendo el texto traducido en la columna Traducir a.

Por ejemplo en la página 1 de Empleados vamos a traducir Informe y Empleados al inglés.

Recordemos que hemos hecho unos cambios en el repositorio de traducción y necesitamos hacer la publicación de esos cambios.

Nota: Para este ejemplo he cambiado la mayoría de las cadenas de textos para que se reflejen los cambios cuando implementemos el cambio de idioma en la aplicación.

Paso 6: Publicar aplicaciones traducidas

Este paso en el proceso de traducción nos permite tener la aplicación traducida disponible para los usuarios.

Volvemos nuevamente a la página de Traducir y hacemos clic en el link “Publicar aplicaciones traducidas”.

Seleccionamos la casilla de control de la aplicación traducida y hacemos clic en el botón Publicar.

Después de publicar podemos ver que en la columna “Necesita Sincronización” nos muestra un No.

Para finalizar esta parte es muy importante destacar que la aplicación traducida 112 no se muestra en el Creador de Aplicaciones ya que dicha aplicación esta oculta y el único modo de actualizarla es por medio de la herramienta de “Traducción de la Aplicación”.

Conclusión

Como hemos visto el proceso de traducción de una aplicación en APEX lleva unos simples pasos pero es muy importante ser ordenados al realizar estos pasos ya que la modificación de la aplicación original hará que se tenga que realizar de nuevo el proceso de extracción, que hará que todas las cadenas de texto de la aplicación sean cargadas en el repositorio de traducción de APEX y luego se debe hacer la edición desde el repositorio de traducciones de APEX o la descarga y edición de los archivos XLIFF para luego realizar la publicación de las traducciones de las cadenas de textos de la aplicación.

En la Parte II de este artículo estaremos implementando en nuestra aplicación el uso del cambio de idiomas por medio de un enlace en la Barra de Navegación de nuestra aplicación, de esa forma el usuario podrá cambiar de idioma según su preferencia.

 


Clarisa Maman Orfali es fundadora y CEO de ClarTech Solutions Inc. Se ha convertido en Oracle ACE hace algunos años, tiene más de 15 años de experiencia en el desarrollo y la capacitación en tecnologías de la información. Hace unos años descubrió la belleza de Oracle Application Express (APEX) y se ha especializado en esa área. Ella también es una Co-Fundadora y Directora del Argentina Oracle User Group (AROUG) y ha participado activamente en la organización de grandes y populares eventos. Ella tiene una gran pasión por las tecnologías de Oracle y quiere ampliar esa pasión e influencia transfiriendo su conocimiento y experiencia a la totalidad de las comunidades de Oracle América Latina y en todo el mundo.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.