4D soporta el estándar XLIFF para la localización de textos y títulos de interfaz. Esta tecnología es utilizada internamente por las aplicaciones 4D. Los desarrolladores 4D como también los de plug-ins pueden beneficiarse de esta nueva implementación en sus propias aplicaciones y plug-ins personalizados.
El principio de definición de una interfaz de aplicación 4D que se traduce dinámicamente es el siguiente: todos los elementos dependientes del lenguaje (texto, etiquetas e imágenes) se almacenan fuera de la aplicación, en forma de archivos, en una carpeta llamada Resources. En los formularios, menús, etc., las etiquetas y las imágenes se especifican como referencias. Durante la ejecución de la aplicación, estos elementos se muestran dinámicamente desde archivos externos dependiendo del contexto lingüístico. El estándar XLIFF codifica el modo de referenciación y muestra las etiquetas.
Nota: también puede leer cadenas almacenadas en archivos XLIFF directamente utilizando el comando Get localized string.
En el editor de formulario, puede ver el contenido "real" de las áreas estáticas en el editor de formularios haciendo clic en el área o seleccionando Mostrar formato o Mostrar nombre en el menú Objeto:
Nota de compatibilidad: además de XLIFF, 4D aún soporta el sistema anterior, basado en el concepto de “recursos” (tipo STR#). Sin embargo, hoy en día este sistema es obsoleto. Ambos sistemas pueden utilizarse al tiempo, en particular en las aplicaciones convertidas (este punto se explica con más detalle en las siguientes páginas).
XLIFF (XML Localization Interchange File Format) es un estándar dedicado a los procesos de traducción y adaptación lingüística. Permite establecer una correspondencia entre un lenguaje fuente y un lenguaje objetivo al interior del archivo XML.
El estándar XLIFF constituye una alternativa a los anteriores sistemas de localización basados en recursos. Varias herramientas, incluyendo software gratuito, permiten la gestión de los archivos XLIFF.
Puede llamar al comando Get localized string para acceder a la traducción de una cadena directamente en el lenguaje actual de la aplicación desde cualquier lugar de la base. Puede utilizar el comando Get database localization para conocer el lenguaje actual.
Nota de compatibilidad: los comandos Get indexed string y STRING LIST TO ARRAY en el tema "Recursos" también pueden aprovechar los documentos XLIFF. Sin embargo, su uso ya no se recomienda y sólo se mantienen por razones de compatibilidad.
En 4D, las referencias XLIFF automáticas pueden utilizarse en las siguientes ubicaciones:
Campo “Nombre del objeto” en las lista de propiedades del editor de formularios
Campo “Nombre de la ventana” en la caja de diálogo de propiedades del formulario accesible desde el Explorador
Textos estáticos, incluyendo títulos de botones, casillas de selección, etc.
Editor de menús (excepto sintaxis NombreObjeto, ver a continuación)
Editor de mensajes de ayuda (excepto sintaxis NombreObjeto, ver a continuación)
Notas:
Para que la referencia XLIFF sea reconocida, debe ubicarse al inicio del área de texto.
No es posible mostrar las referencias XLIFF en el editor de mensajes de ayuda. Para utilizar los mensajes de ayuda basados en XLIFF, introduzca directamente las referencias XLIFF en el campo Mensajes de ayuda de la lista de propiedades.
En 4D, puede utilizar las referencias XLIFF automáticas vía una de las siguientes sintaxis:
Sintaxis :15115,3 Cuando esta sintaxis se utiliza con los archivos XLIFF, el primer valor (15115 en el ejemplo) designa el atributo id del elemento grupo. El segundo valor (3 en este ejemplo) designa el atributo id del elemento trans-unit. Nota de compatibilidad: esta sintaxis es idéntica a la de las referencias de recursos STR# “antigua generación”, de tipo “:xxxx,yyy” donde xxxx es el número del recurso STR# y yyy es el número del elemento. Por ejemplo, “:10115,3” significa que 4D debe utilizar el tercer elemento del recurso STR# número 10115. De esta forma usted puede conservar en una base convertida un antiguo sistema basado en recursos mientras instala un nuevo sistema XLIFF. De hecho, 4D buscará primero los valores correspondientes a 1015,3 en todos los archivos XLIFF cargados; luego, si no encuentra la cadena, la buscará en todos los archivos de recursos abiertos. Con este mecanismo, puede implementar un sistema basado en XLIFF en una aplicación sin tener que editar las referencias dinámicas existentes: sólo debe copiar un archivo XLIFF en la ubicación correcta (ver a continuación) y será tenido en cuenta por 4D. Ambos sistemas pueden utilizarse simultáneamente. En todos los casos, los archivos XLIFF tienen prioridad sobre los archivos de recursos si la misma referencia se presenta en ambas ubicaciones.
Sintaxis :xliff:OKButton Esta alternativa de sintaxis sólo se puede utilizar con los archivos XLIFF cargados. En este caso, el valor referenciado (OKButton en el ejemplo) designa el atributo resname del elemento trans-unit.
Sintaxis ObjectName (basado en el campo “Nombre”, en la lista de propiedades) El propósito de esta sintaxis es facilitar la traducción de los formularios existentes. A diferencia de otras sintaxis, se utiliza únicamente con formularios. El principio es enmarcar en el archivo XLIFF los elementos trans-unit para dos elementos group cuyos atributos resname contienen respectivamente, el nombre de la tabla y del formulario.
Ejemplo (formulario tabla)
Para traducir la etiqueta del botón “Guardar” en el formulario “Form1” de la tabla [Clientes], el archivo XLIFF tiene estas líneas:
Nota: para que la sintaxis ObjectName funcione correctamente, es necesario que la propiedad "Título" del objeto no se deje vacía en la lista de propiedades.
Si utiliza diferentes sintaxis en su base, el orden de prioridad aplicado al buscar una traducción válida en los archivos XLIFF será:
Es posible visualizar la referencia XLIFF o el título traducido en función del lenguaje actual en el editor de formularios utilizando, respectivamente, los comandos Show Name y Show Resource del menú Objeto. Para mayor información, consulte Utilizar las referencias en los textos estáticos.
Para implementar una arquitectura XLIFF para su aplicación localizada, debe crear uno o más archivos XLIFF válidos y copiarlos en la carpeta e Resources de la base.
La ruta de acceso completa a utilizar es la siguiente:
Windows: MiBase\Resources\Lang.lproj\MyEnLoc.xlf
Mac OS: MiPaquete:Resources:Lang.lproj:MyEnLoc.xlf
donde:
MiBase es la carpeta que contiene los archivos de la base y MiPaquete es el paquete de la base bajo Mac OS.
Lang.lproj es una carpeta que contiene los archivos XLIFF para el lenguaje Lang. El nombre de la carpeta debe cumplir el estándar internacional (ver el siguiente párrafo). Por ejemplo, para las versiones en inglés la carpeta debe tener el nombre en.lproj.
4D cargará automáticamente los archivos XLIFF en la carpeta correspondiente al lenguaje actual de la base. Para definir el lenguaje actual de la base, 4D buscará sucesivamente en la carpeta Resources de la base un lenguaje correspondiente a (en el orden de prioridad siguiente):
El lenguaje del sistema (bajo Mac OS, varios idiomas pueden definirse con un orden de preferencia, 4D utiliza este parámetro).
El lenguaje de la aplicación 4D.
Inglés
Si ninguna de estas búsquedas da resultados, se carga el primer lenguaje que se encuentra en la carpeta Resources.
Si se utiliza una variación del lenguaje y no estás disponible en los archivos XLIFF, se utilizará el siguiente lenguaje más cercano.
Los nombres de los archivos XLIFF son libres; sólo deben tener la extensión “.xlf.”. Puede ubicar varios archivos XLIFF en la misma carpeta del lenguaje; se cargarán en el orden alfabético de los nombres de los archivos.
El nombre de la carpeta “.lproj” debe respetar una de las normas descritas anteriormente. 4D buscará un nombre de carpeta válido basado en cada una de estas normas, en el orden siguiente:
Language-Regional Codes En esta combinación, un lenguaje es descrito por un código lenguaje (ISO639-1) + un signo menos + un código país (ISO3166) o un código script de 4 letras (ISO15924). Por ejemplo, “fr-ca” (fr-ca.lproj) para el lenguaje francés canadiense.
Nombre Legacy En esta convención, el nombre del lenguaje se escribe completamente en inglés. Por ejemplo, “inglés” (english.lproj) para el inglés. Nota: las dos primeras convenciones son soportadas únicamente para versión 10.4 de Mac OS o superiores. Con las versiones anteriores de este sistema operativo, sólo puede utilizarse el nombre “Legacy”.
Una tabla de códigos de lenguaje soportados por 4D se encuentra en .
Si se encuentran varias definiciones del lenguaje, 4D siempre utilizará la traducción más precisa. Por ejemplo, si el parámetro de lenguaje del sistema operativo es “francés canadiense,” 4D buscará primero las traducciones “fr-ca” y luego, si no las encuentra, las traducciones “fr”.
Nota: el mismo principio aplica dentro de los archivos XLIFF para la etiqueta “target-language”. Debe asegurarse de definir este atributo dentro de los archivos XLIFF ya que un archivo ubicado en la carpeta “fr-ca.lproj” que tiene una etiqueta “target-language=fr” se considerará como una traducción a “fr” y no a “fr-ca.”
Los archivos XLIFF se recargan “dinámicamente” mientras localiza la aplicación, de manera que puede ver las palabras o frases localizadas encajen en los objetos marco (botones, cajas de grupo, etc.). Esta recarga ocurre cuando 4D pasa al primer plano, si la fecha u hora de modificación ha cambiado desde la última carga. El formulario actual se cargará simultáneamente.