XLIFF (XML Localisation Interchange File Format) è un linguaggio derivato da XML sviluppato per risolvere una serie di problematiche nella gestione della traduzione multilingua.
La prima versione è stata rilasciata nel maggio del 2001 da un gruppo di aziende tecnologiche quali IBM, Novell, Oracle e Sun Microsystems.
Nel dicembre 2001 XLIFF è entrato a far parte dell'OASIS (Organization for the Advancement of Structured Information Standards) e nell'ottobre 2003 è stata rilasciata la specifica ufficiale per la versione 1.1
La versione successiva (1.2) è in corso di pubblicazione (anno 2006).
Il concetto alla base di questo formato è molto semplice:

Dal documento originale vengono estratti da una parte i contenuti da tradurre (translations units) e dall'altra tutti gli elementi che non sono traducibili (skeleton).
Una volta terminata la traduzione entrambi gli elementi vengono nuovamente assemblati per formare il documento finale.
Il vantaggio principale dell'utilizzo del formato XLIFF risiede nella completa separazione dei contenuti dalla forma, semplificando notevolmente il processo di traduzione di un documento.
Ecco come appare il processo senza l'utilizzo di XLIFF:

In questo primo caso, è compito della società di traduzioni di convertire i diversi formati ricevuti, in un formato compatibile col sistema di traduzione assistita utilizzato.
I principali inconvenienti di tale approccio sono:
Ecco lo stesso processo con l'utilizzo di XLIFF:

Nel secondo caso il cliente stesso utilizza strumenti che supportino in modo nativo il formato XLIFF oppure strumenti in grado di produrre un documento in formato XLIFF da passare poi al fornitore di traduzioni.
I vantaggi sono molti:
Ecco un esempio di file XLIFF:
<xliff version='1.1' xmlns="urn:oasis:names:tc:xliff:document:1.1">
<file original="file1.prop" source-language="en-US" datatype="javapropertyresourcebundle">
<header>
<skl><external-file href="file1.prop"/></skl>
</header>
<body>
<trans-unit id="1" resname="id1">
<source xml:lang="en-US">Testo da tradurre 1</source>
</trans-unit>
<trans-unit id="2" resname="id2">
<source xml:lang="en-US">Testo da tradurre 2 </source>
</trans-unit>
</body>
</file>
Da questo esempio vediamo che la struttura di base di un file XLIFF è composta da: