Lo

Localizzazione del Software

tramite lo standard TMX

Nicola Asuni

http://nicolaasuni.tecnick.com

Durante questa presentazione verranno accennati alcuni aspetti relativi all'internazionalizzazione del Software, verrà introdotto lo standard TMX e verranno illustrati alcuni semplici esempi di implementazione di questo standard in PHP e JavaTM.

Introduzione

Uno degli aspetti fondamentali dell'internazionalizzazione (i18n) consiste nel separare dal nucleo del codice sorgente i testi, le etichette, i messaggi ed altre informazioni sensibili alla localizzazione.

Questo consente di mantenere la stessa base di codice sorgente per tutte le versioni del Software nelle diverse lingue e facilita il processo di traduzione perché tutte le risorse sensibili al contesto locale sono ben identificate ed isolate.

Localizzazione

Le TM (Translation Memories), conosciute anche come Translation Databases, sono essenzialmente costituite da un database (archivio) dove le frasi del testo di riferimento sono associate alle corrispondenti traduzioni in una o più lingue.

L'insieme della frase di riferimento con le sue traduzioni è detto Translation Memory Unit.

Le TM introducono nella gestione delle risorse localizzabili, i concetti di riuso, aumento della consistenza, riduzione della durata del ciclo produttivo e riduzione dei costi.

TM - Translation Memory

Le applicazioni che gestiscono le TM sono dette CAT (Computer Aided Translation).

I CAT, ampiamente utilizzati dai maggiori produttori di Software, sono strumenti di ausilio alla traduzione linguistica progettati per migliorare la qualità e l'efficenza del processo di traduzione umana e non per sostituirlo.

I CAT attualmente certificati TMX sono:

TRADOS 7 (Trados), WorldServer (Idiom Technologies, Inc), SDLX (SDL International), Ambassador (GlobalSight).

CAT - Computer Aided Translation

TMX (Translation Memory eXchange) è un Open Standard che utilizza l'XML (eXtensible Markup Language) per l'archiviazione e l'interscambio di memorie di traduzione (TM - Translation Memories).

Lo standard TMX è un sistema neutrale per lo scambio di dati tra diversi sistemi di traduzione che minimizza o elimina la perdita di dati critici.

TMX - Translation Memory eXchange

Esempio d'uso del TMX

Documento

TMX

Strumento

A

Database TM

Proprietario

RTF

Strumento

B

Database TM

Proprietario

HTML

TMX è il risultato di un'iniziativa presa dallo Special Interest Group OSCAR (Open Standards for Container/Content Allowing Re-use) di LISA (Localization Industry Standards Association).

Fondata nel 1990, LISA è la principale organizzazione mondiale no-profit per il GILT (Globalizzazione, Internazionalizzazione, Localizzazione e Traduzione).

Tra le centinaia membri e co-fondatori di LISA spiccano le organizzazioni internazionali per la standardizzazione ed alcune tra le aziende più grandi e conosciute a livello mondiale.

LISA (http://www.lisa.org)

L'adozione dell'Open Standard TMX fornisce un modo neutrale per la gestione delle TM in maniera indipendente dagli strumenti CAT utilizzati, mettendoci così al riparo da futuri cambiamenti del mercato o delle tecnologie.

Secondo una ricerca condotta da OSCAR nel 2004 (http://www.lisa.org/products/surveys/tm04survey.html), lo standard TMX si pone a tutela degli enormi investimenti economici (milioni di dollari) fatti dai principali produttori di Software per la gestione delle proprie TM.

Vantaggi del TMX

L'attuale versione delle specifiche TMX è la 1.4b del 26 Aprile 2005 ed è disponibile su:

http://www.lisa.org/standards/tmx/tmx.html

Lo standard TMX è XML-compliant ed utilizza vari standard ISO per la data/ora, per i codici delle lingue e delle nazioni.

I file TMX sono documenti XML "well-formed" in Unicode pensati per essere esportati ed importati automaticamente, e che quindi possono essere trattati senza un esplicito riferimento al DTD TMX (Document Type Definition).

Specifiche TMX

Un documento TMX è racchiuso dall'elemento radice <tmx> che a sua volta contiene gli elementi <header> e <body>.

L'<header> contiene i meta-dati del documento come attributi; può contenere informazioni a livello di documento con gli elementi <note> (note) e <prop> (property) e gli elementi <ude> (user-defined encoding) per elencare i caratteri definiti dall'utente.

L'elemento <body> contiene una collezione non ordinata di <tu> (translation units).

Struttura Generale dei file TMX (1/3)

Ogni elemento <tu> identifica attraverso l'attributo tuid una determinata risorsa testuale.

Ogni <tu> contiene almeno un elemento <tuv> (translation unit variant) che specifica la lingua della traduzione con l'attributo xml:lang.

Ogni <tuv> contiene l'elemento <seg> (segment) che specifica le risorse testuali e può anche contenere gli elementi <note> and <prop>.

Struttura Generale dei file TMX (2/3)

Un segmento <seg> può contenere anche elementi di markup: gli elementi <bpt>, <ept>, <it> e <ph> permettono di incapsulare il codice nativo originale; l'elemento <hi> permette di aggiungere degli elementi di markup non previsti; l'elemento <sub> delimita le risorse testuali incapsulate all'interno di regioni di markup.

Struttura Generale dei file TMX (3/3)

Esempio di file TMX (1/2)

<?xml version="1.0" ?>

<tmx version="1.4">

<header

creationtool="XYZTool"

creationtoolversion="1.01-023"

datatype="PlainText"

segtype="sentence"

adminlang="en-us"

srclang="EN"

o-tmf="ABCTransMem">

</header>

Di seguito un semplice file TMX che utilizzeremo nei nostri esempi.

Esempio di file TMX (2/2)

<body>

<tu tuid="hello">

<tuv xml:lang="en">

<seg>hello</seg>

</tuv>

<tuv xml:lang="it">

<seg>ciao</seg>

</tuv>

</tu>

<tu tuid="world">

<tuv xml:lang="en">

<seg>world</seg>

</tuv>

<tuv xml:lang="it">

<seg>mondo</seg>

</tuv>

</tu>

</body>

</tmx>

Oltre che come file di interscambio tra TM, il TMX può anche essere utilizzato direttamente per archiviare le risorse testuali dei nostri progetti software, separando così la base di codice sorgente dalle informazioni sensibili alla localizzazione (testi, etichette, messaggi, ...).

Anziché inserire le stringhe direttamente nel codice sorgente, ne richiameremo il loro valore specificando l'indice di una collezione di risorse testuali.

Es: print “ciao”; diventa print Resource(“ciao_id”);

Bridge Software per TMX

Schema del Bridge TMX

Documento

TMX

Programma

CAT

Applicazione

Software

Bridge

TMX

In PHP è possibile estrarre gli elementi testuali dal codice sorgente originale ed isolarli come elementi di un array che in realtà sono delle mappe ordinate che mettono in relazione valori e chiavi.

Un array PHP può essere utilizzato come un array reale, una lista (vector), una hashtable (che è l'implementazione di una map), un dizionario, una collezione, una pila, una coda o altro.

Il bridge TMX per PHP dovrà quindi caricare le risorse testuali direttamente dal file TMX ed inserirle in un array.

Bridge PHP per TMX

La classe Open Source (LGPL) TMXResouceBundle, disponibile su http://tmxphpbridge.sourceforge.net, implementa un bridge minimale in PHP 5 per TMX.

L'utilizzo di questa classe è piuttosto semplice:

TMXResourceBundle in PHP

// includo la classe TMXResourceBundle

require_once('TMXResourceBundle.php');

// istanzio un oggetto della classe

$tmxres = new TMXResourceBundle(“file_tmx.xml”,“it”);

// stampo il valore di una risorsa testuale

echo $tmxres->resource['hello'];

All'interno del costruttore è definito il parser TMX utilizzando le funzioni XML Parser di PHP che fanno uso delle librerie standard expat.

Attraverso la definizione di speciali metodi detti handlers (startElementHandler, endElementHandler e segContentHandler), che si attivano automaticamente a seconda del tipo di elementi che si incontrano nel file XML, questa classe provvede a popolare l'array resource con le risorse testuali della lingua specificata, utilizzando come indici i valori degli attributi tuid del nodi tu.

Funzionamento del bridge PHP

Attraverso la classe java.util.ResourceBundle, Java dispone già di una soluzione pratica per la localizzazione. È infatti possibile estrarre gli elementi testuali dal codice sorgente originale ed isolarli in un componente ResourceBundle quale ad esempio la classe ListResourceBundle o un file di proprietà.

La soluzione ottimale per l'implementazione del bridge consiste quindi nell'estendere la classe ResourceBundle in modo che possa leggere direttamente i dati da file TMX.

Bridge Java per TMX

La classe Open Source (LGPL) TMXResouceBundle, disponibile su http://tmxjavabridge.sourceforge.net, implementa un bridge minimale in Java per TMX.

L'utilizzo di questa classe è piuttosto semplice:

TMXResourceBundle in Java

// includo la classe TMXResourceBundle

import com.tecnick.tmxjavabridge.TMXResourceBundle;

// istanzio un oggetto della classe

final static TMXResourceBundle tmxres =

new TMXResourceBundle("file_tmx.xml","it");

// stampo il valore di una risorsa testuale

System.out.println(tmxres.getString("hello",""));

Il metodo parseXmlFile di questa classe fa uso del parser XML di Sun (javax.xml.parsers.DocumentBuilder.parse) che provvede a caricare la struttura del file XML in un oggetto di tipo org.w3c.dom.Document (DOM - Document Object Model).

I nodi del documento vengono analizzati in modo iterativo e le risorse testuali vengono aggiunte ad hashcontents (un oggetto di tipo java.util.Hashtable) usando come chiavi i valori degli attributi tuid del nodi tu.

Il metodo getString(String key) ereditato da ResourceBundle permette di ricavare la risorsa associata ad una determinata chiave.

Funzionamento del bridge Java

Asuni N, “Localizzazione in PHP tramite lo standard TMX” [online] 2004-10-21,http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=article_tmxphp.

Asuni N, “Localizzazione in Java tramite lo standard TMX” [online] 2004-10-14,http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=article_tmx.

Asuni N, “TMXResourceBundle - TMX PHP Bridge” [online] 2005-01-08,http://tmxphpbridge.sourceforge.net.

Asuni N, “TMXResourceBundle - TMX Java Bridge” [online] 2005-01-08,http://tmxjavabridge.sourceforge.net.

Itagaki M, “Use XML as a Java Localization Solution” [online] 2000-11-10,http://www.ftponline.com/javapro/archives/mi0011/default.asp.

O'Conner J, “Java Internationalization: Localization with ResourceBundles” [online] 1998-10-01, http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/.

OSCAR - LISA, “TMX - Translation Memory eXchange” [online] 2004-10-01,http://www.lisa.org/standards/tmx.

OSCAR - LISA, “TMX 1.4b Specification” [online] 2005-03-26,http://www.lisa.org/standards/tmx/tmx.html.

W3C, “Extensible Markup Language (XML)” [online] 2005-08-02,http://www.w3.org/XML/.

Riferimenti

Grazie per l'attenzione.

Insert your notes here.

LISA mette in contatto fra loro numerosi soggetti che contribuiscono al processo di internazionalizzazione delle aziende e che comprendono: consumatori, governi, organizzazioni per gli standard, istituti di ricerca e consulenza, fornitori di servizi e di tecnologie per la taduzione e localizzazione.

LISA offre servizi sotto forma di iniziative per la standardizzazione, Special Interest Groups, conferenze e programmi di apprendimento di supporto GILT alle imprese.

I soci ed i gruppi affiliati a LISA comprendono l'International Organization for Standardization (ISO Liaison Category A Members of TC 37 and TC 46), World Bank, OASIS, IDEAlliance, AIIM, Advisory Council (TAC), Fort-Ross, &euro;TTEC, Japan Technical Communicators Association, Society of Automotive Engineers (SAE), European Union, Canadian Translation Bureau, TermNet, American Translators Association (ATA), IWIPS, Fédération Internationale des Traducteurs (FIT), Termium, JETRO, Institute of Translating and Interpreting (ITI), Unicode Consortium, OpenI18N, professionisti ed organizzazioni per il commercio.

Tra i membri ed i co-fondatori di LISA spiccano alcune tra le aziende più grandi e conosciute a livello mondiale: Adobe, Avaya, Cisco Systems, CLS Communication, EMC, Hewlett Packard, IBM, Innodata Isogen, Fuji Xerox, Microsoft, Oracle, Nokia, Logitech, SAP, Siebel Systems, Standard Chartered Bank, FileNet, LionBridge Technologies, Lucent, Sun Microsystems, WH&P, PeopleSoft, Philips Medical Systems, Rockwell Automation, The RWS Group, Xerox Corporation and Canon Research.

Localizzazione del Software tramite lo standard TMX

Presentazione Nicola Asuni per LinuxDay 2005 (GULCh)

Presentazione GULCh LinuxDay 2005 linux tmx java php localizzazione internazionalizzazione i18n

Template by Nicola Asuni 2005-10-10 - Presentazioni LinuxDay - GULCh 2005-11-26

Nicola Asuni

2005-05-01T13:39:17