# Open Language Tools

Open Language Tools is a Java project released by Sun Microsystems under the terms of Sun's CDDL (a GPL-incompatible free software license).
Open Language Tools are intended for people who are involved in translation of software and documentation into different natural languages (localisation engineers, translators, etc.). They are based around common localisation industry standard file formats such as XLIFF and TMX.
Open Language Tools consist of the XLIFF Filters designed to convert different source file formats to XLIFF and the XLIFF Translation Editor which is designed to read and edit XLIFF files. They are written in Java and run on Windows, Mac OS, or Linux as long as Java J2RE (at least 1.4.2) is installed.

## Workflow
### XLIFF Filters

This is an application designed to convert different source file formats to an XLIFF format. It is currently based around the XLIFF 1.0 specification. The conversion is simple. Launch the filters, drag and drop a source file on the application, and the file will be converted to a .xlz file in the same directory as the source file. What basically happens is that the filter:
* reads and parses the source file,
* separates the translatable portions of the text from the non-translatable portions by breaking the file into blocks
* further segments the translatable blocks into smaller sections, typically sentences, and
* writes the XLIFF file (.xlf) and the skeleton file (.skl) which are further bundled within a zip archive with the .xlz extension.

### XLIFF Translation Editor

This is an application which is made for translating the contents of XLIFF files. As the XLIFF format itself is quite complex and not very user friendly (especially to people not familiar with XML), XLIFF Translation Editor was developed to make the translation and editing much more feasible. Upon opening it shows the user two major panes with the source and target language. The text is segmented and marked – whether it is translated or untranslated, whether it has any 100% matches or fuzzy translations suggested from other applications that may have processed the XLIFF file in the past. The source and target segments are shown in order to give the translator the full context and they are directly editable.
Initially, the translator creates a Project into which either an .xlf or .xlz files are inserted. The central part of the editor is the “Mini-TM”, a simple file-based database with all source and target segments from the current project, which is being automatically updated. As soon as the translator starts translating a segment which has already been translated, the target segment is automatically inserted based on the Mini-TM. Similarly, the Mini-TM suggests fuzzy matches. Segments can be marked as approved, reviewed, unreviewed, problematic, Mini-TM translations or user translations. There is also a mechanism to display notes from the source documents (typically from formats like .po files or from other translators).
There is a back-conversion tool integrated into the editor which converts the XLIFF files to their original format. For each XLIFF file, it is possible to create a translation memory (TMX) file, which can be later used to update the central translation database.

## Supported files
### Documentation file types

* HTML
* DocBook SGML
* JSP
* XML (generic - needs a configuration file for each XML type)
* OpenOffice.org: sxw, sxc, sxi
* Open Document Format: odw, odc, odi
* Plain text

### Software file types

* PO (gettext)
* Msg/tmsg (catgets)
* Java .properties
* Java ResourceBundle
* Mozilla .DTD resource files