4D v16.3

Anexo C: Arquitectura XLIFF

Inicio

 
4D v16.3
Anexo C: Arquitectura XLIFF

Anexo C: Arquitectura XLIFF  


 

 

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.

Para mayor información sobre el estándar XLIFF, consulte la especificación oficial XLIFF 1.1 que se encuentra en la siguiente dirección:
http://www.oasis-open.org/committees/xliff/documents/xliff-specification.htm

Atención: el estándar XLIFF es sensible a mayúsculas y minúsculas.

Hay dos maneras de llamar cadenas XLIFF en 4D:

  • Utilizando el comando Get localized string
  • Utilización el sistema de traducción dinámica mediante referencias

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:
    • <group resname="[Clientes]">
      <group resname="Form1">
      <trans-unit resname="Guardar">
      ...
      </trans-unit>
      </group>
      </group>
    • Ejemplo (formulario proyecto)
      En un formulario proyecto, el nombre de la tabla debe reemplazarse por [ProjectForm], lo que produce lo siguiente:
      <group resname="[ProjectForm]">
      <group resname="Form1">
      <trans-unit resname="Guardar">
       ...
      </trans-unit>
      </group>
      </group>

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á:

1. sintaxis “:15115,3”
2. sintaxis “:xliff:OKButton”
3. sintaxis “MyTitle”

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.

Para mayor información sobre la carpeta Resources de la base, consulte Gestión de la carpeta Resources

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):

  1. El lenguaje del sistema (bajo Mac OS, varios idiomas pueden definirse con un orden de preferencia, 4D utiliza este parámetro).
  2. El lenguaje de la aplicación 4D.
  3. Inglés
  4. Si ninguna de estas búsquedas da resultados, se carga el primer lenguaje que se encuentra en la carpeta Resources.

El comando Get database localization permite conocer el lenguaje actual definido para la base. 

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:

  1. 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.
  2. ISO639-1
    Este estándar define cada lenguaje por dos letras. Por ejemplo, “en” (en.lproj) para el inglés.
    Ref: http://www.loc.gov/standards/iso639-2/php/English_list.php
  3. 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.

La siguiente tabla lista los códigos de lenguaje soportados por 4D para la gestión de archivos XLIFF.

LenguajesISO639-1“Legacy”ISO3166/ ISO15924
AFRIKAANSafafrikaans
ALBANIANsqalbanian
ARABIC_SAUDI_ARABIAararabicsa
ARABIC_IRAQararabiciq
ARABIC_EGYPTararabiceg
ARABIC_LIBYAararabicly
ARABIC_ALGERIAararabicdz
ARABIC_MOROCCOararabicma
ARABIC_TUNISIAararabictn
ARABIC_OMANararabicom
ARABIC_YEMENararabicye
ARABIC_SYRIAararabicsy
ARABIC_JORDANararabicjo
ARABIC_LEBANONararabiclb
ARABIC_KUWAITararabickw
ARABIC_UAEararabicae
ARABIC_BAHRAINararabicbh
ARABIC_QATARararabicqa
BASQUEeubasque   
BELARUSIANbebelarusian   
BULGARIANbgbulgarian   
CATALANcacatalan   
CHINESE_TRADITIONALzhchinesehant
CHINESE_SIMPLIFIEDzhchinesehans
CHINESE_HONGKONGzhchinesehk
CHINESE_SINGAPOREzhchinesesg
CROATIANhrcroatian   
CZECHcsczech   
DANISHdadanish   
DUTCHnldutch   
DUTCH_BELGIANnldutchbe
ENGLISH_USenenglish
ENGLISH_UKenenglishgb
ENGLISH_AUSTRALIAenenglishau
ENGLISH_CANADAenenglishca
ENGLISH_NEWZEALANDenenglishnz
ENGLISH_EIREenenglishie
ENGLISH_SOUTH_AFRICAenenglishza
ENGLISH_JAMAICAenenglishjm
ENGLISH_BELIZEenenglishbz
ENGLISH_TRINIDADenenglishtt
ESTONIANetestonian   
FAEROESEfofaorese   
FARSIfapersian   
FINNISHfifinnish   
FRENCHfrfrench   
FRENCH_BELGIANfrfrenchbe
FRENCH_CANADIANfrfrenchca
FRENCH_SWISSfrfrenchch
FRENCH_LUXEMBOURGfrfrenchlu
GERMANdegerman   
GERMAN_SWISSdegermanch
GERMAN_AUSTRIANdegermanat
GERMAN_LUXEMBOURGdegermanlu
GERMAN_LIECHTENSTEINdegermanli
GREEKelgreek   
HEBREWhehebrew   
HUNGARIANhuhungarian   
ICELANDICisiceland   
INDONESIANidindonesian   
ITALIANititalian   
ITALIAN_SWISSititalianch
JAPANESEjajapanese   
KOREAN_WANSUNGkokorean   
KOREAN_JOHABkokorean   
LATVIANlvlatvian   
LITHUANIANltlithuanian   
NORWEGIANnonorwegian   
NORWEGIAN_NYNORSKnnnynorskno
POLISHplpolish   
PORTUGUESEptportuguese   
PORTUGUESE_BRAZILIANptportuguesebr
ROMANIANroromanian   
RUSSIANrurussian   
SERBIAN_LATINsrserbianlatn
SERBIAN_CYRILLICsrserbiancyrl
SLOVAKskslovak   
SLOVENIANslslovenian   
SPANISH_CASTILLANesspanish   
SPANISH_MEXICANesspanishmx
SPANISH_MODERNesspanish   
SPANISH_GUATEMALAesspanishgt
SPANISH_COSTA_RICAesspanishcr
SPANISH_PANAMAesspanishpa
SPANISH_DOMINICAN_REPUBLICesspanishdo
SPANISH_VENEZUELAesspanishve
SPANISH_COLOMBIAesspanishco
SPANISH_PERUesspanishpe
SPANISH_ARGENTINAesspanishar
SPANISH_ECUADOResspanishec
SPANISH_CHILEesspanishcl
SPANISH_URUGUAYesspanishuy
SPANISH_PARAGUAYesspanishpy
SPANISH_BOLIVIAesspanishbo
SPANISH_EL_SALVADOResspanishsv
SPANISH_HONDURASesspanishhn
SPANISH_NICARAGUAesspanishni
SPANISH_PUERTO_RICOesspanishpr
SWEDISHsvswedish   
SWEDISH_FINLANDsvswedishfi
THAIththai   
TURKISHtrturkish   
UKRAINIANukukrainian   
VIETNAMESEvivietnamese

 
PROPIEDADES 

Producto: 4D
Tema: Anexos

 
HISTORIA 

 
ARTICLE USAGE

Manual de Diseño ( 4D v16)
Manual de Diseño ( 4D v16.1)
Manual de Diseño ( 4D v16.3)