Upload
ovidius-gmbh
View
872
Download
1
Embed Size (px)
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
Binary content? MTOM (SOAP Message Transmission Optimization Mechanism)
MTOM MIME attachment
Content-Type: multipart/related;boundary=MIMEBoundary_5F0BF3DC11582467646222; type="application/xop+xml";
start="<0.urn:uuid:[email protected]>";
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:[email protected]>
<e:Envelope ...>
<e:Body>
<c:SampleRequest>
<xop:Include href="cid:1.urn:uuid:[email protected]"/>
</c:SampleRequest>
</e:Body>
</e:Envelope>
--MIMEBoundary_5F0BF3DC11582467646222
content-type: text/plain content-transfer-encoding: binary
content-id: <1.urn:uuid:[email protected]>
... 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