What is COTI?

Preview:

DESCRIPTION

A brief introduction to the new standard for exchanging translation data. www.blog.ovidius.com www.dercom.de

Citation preview

What is COTI?A brief introduction to the new standard for exchanging translation data

COTI = Common Translation Interface

Common: not proprietary

Translation: the rendering of something into another language (dictionary.com)

Interface: a common boundary or inter- connection between systems (dictionary.com)

COTI: Standard for exchanging translation data with a Translation Management System

Why?

Translation data is complex.

Everybody does it differently.

System integration is key.

Strong demand to increase flexibility and capability of CMS/ TMS integration

Who?The Association of German Editing and Content Management Software System Designers

German vendors for Content Management Systems

How does it work?

3 consecutive integration levels

L3:Communication API

L2:Import and Export

L1:Translation package

Level 1: Translation package defined

Translation data is provided in the specified package structure.

Level 2: automatic export and import

Translation packages are exchanged with the TMS via the specified exchange folder mechanism.

Level 3: Communication API

Translation packages are exchanged with the TMS using the Communication API over SOAP.

Level 1Translation packages

COTI translation package = ZIP-file with meta file, translation files, reference files and additional files

translation-COTI-specification_ 2009-11-13T10:39:35Z.coti

/4711_de-DE_en-GB//COTI.xml/translation files//reference files/

/4711_de-DE_ru-RU//COTI.xml/translation files//reference files/

multiple projects in one package!

A COTI package

Meta file COTI.xml

<coti version="1.0" level="1" ...>

<project name="4711" project-id="123" proposal="yes"

checkout-date= "2013-08-21T11:59:00Z" due-date= "" ...>

<subject>Subject</subject>

<translation source-language= "de-DE" target-language= "en-GB" status="none|proof|final"/>

<meta name="CMS meta field" value="123" description=""/>*

<files>...</files>

</project>

</coti>

Meta file | COTI.xml

Describes the translation project.References the project content.

Translation content

All files to be translated.Can be anything, not only XML.

Reference content

Optional support material for the translator or the TMS.

DTDs, Style sheets, templates, context material (e.g. rendered output)

Level 2How to exchange those COTI packages?

The COTI exchange folder

untranslated/translated/error/untranslated/error/translated/archive/untranslated/archive/translated/logs/TMSlogs/CMS

the CMS puts packages here...

...and gets translated content back, here

Level 3Communication API

the “grown up” system integration

SOAP v1.2 message

<e:Envelopexmlns:e="http://www.w3.org/2003/05/soap-envelope">

<e:Header>

<!-- Header data />

</e:Header>

<e:Body>

<!-- Body data />

</e:Body>

</e:Envelope>

Here is where the COTI payload goes

MTOM MIME attachment

Content-Type: multipart/related;boundary=MIMEBoundary_5F0BF3DC11582467646222; type="application/xop+xml";

start="<0.urn:uuid:5F0BF3DC11582467646223@apache.org>";

start-info="text/xml";charset=UTF-8

--MIMEBoundary_5F0BF3DC11582467646222

content-type: application/xop+xml; charset=UTF-8; type="text/xml"; content-transfer-encoding: binary

content-id: <0.urn:uuid:5F0BF3DC11582467646223@apache.org>

<e:Envelope ...>

<e:Body>

<c:SampleRequest>

<xop:Include href="cid:1.urn:uuid:5F0BF3DC11582467646221@apache.org"/>

</c:SampleRequest>

</e:Body>

</e:Envelope>

--MIMEBoundary_5F0BF3DC11582467646222

content-type: text/plain content-transfer-encoding: binary

content-id: <1.urn:uuid:5F0BF3DC11582467646221@apache.org>

... binarydata ...

--MIMEBoundary_5F0BF3DC11582467646222--

Authentication and Security? WS-Security; Support of Username Token and X.509 profiles is mandatory

WS-Secutity header with Username Token

<s:Security><s:UsernameToken>

<s:Username>TheName</s:Username><s:Password Type="s:PasswordDigest">fj73h83jcG6SD5k98jsd7jgmn/yj0=</s:Password><s:Nonce>5uW4ABku/m6/S5rnE+L7vg==</wsse:Nonce><wsu:Created xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">2013-07-12T04:24:02Z</wsu:Created>

</s:UsernameToken></s:Security>

COTIsessionId authenticates an API call after login()

<e:Envelopexmlns:e="http://www.w3.org/2003/05/soap-envelope"xmlns:c="http://www.DERCOM.de/COTI/2013/1.0/namespace">

<e:Header><c:COTIsessionId>345jkhjDHjk1Dl9HgelkDLK</c:COTIsessionId>

</e:Header><e:Body><!-- Body data --></e:Body>

</e:Envelope>

Level 3 - CMS APIThe interface of the CMS

SessionServiceLogin and logout from the CMS

NotificationServiceTMS pushes updates for translation projects

ReportServiceTMS pushes requested reports

Level 3 - TMS APIThe interface of the TMS

this is where the music plays

SessionServiceLogin and logout from the TMS

InfoServiceRequest meta info from the TMS: version, meta attributes, status of a project

ReportServiceCMS requests reports

ProjectServicecreate and manage translation projects

DocumentServiceupload and download documents

Lifecycle of a translation project in TMS API calls (if all goes well)

1. String CreateProject(byte[] cotiFile)

2. String UploadDocument(String projectId, FileType

fileType, String fileRef, byte[] content)

3. void StartProject(String projectId, String workflow)

4. byte[] DownloadDocument(String documentId)

5. void CloseProject(String projectId)

CreateProject and UploadDocument are different operations for a reason: by sending one document at a time, the interfaces scales.Big documents can still be a problem though and should be avoided.

Good to know

And adoption of the standard? The standardization process is currently in the Request for Comments status.

The DERCOM members are committed to implement all levels as soon as RfC phase concludes.

Thank you!

Get the COTI spec: http://www.dercom.de/projekte

Twitter: #PRubarth

Recommended