Today’s web and mobile app localization industry relies on numerous standards, libraries and file formats to facilitate the exchange between developers and translators. While some formats are somewhat sophisticated, others lack even the most basic features, like pluralization and contextualization. And most can’t offer support for more advanced localization features, like language cases.
The most common localization formats include Gettext PO, PHP Arrays, Android XML, YAML, .Net RESX, iOS Strings and many others. A typical developer today works with many frameworks - for instance a Laravel backend app (PHP Arrays) with Ember front end (i18n JS) and iOS mobile app (Strings). Since all standards have distinct syntax, in many cases translations cannot be shared across applications.
Translation Markup Language (TML) aims to solve both these problems by introducing a powerful extensible cross-platform syntax that offers support for pluralization, language contextualization, language cases, reusable decorators and much more. TML libraries are available for all major web and mobile platforms. TML allows translators to do in-context translations - where they can translate right from within the apps. TML libraries also eliminate the need for developers to ever deal with the resource files, as all extractions and translation substitution is done realtime and the resource files are only used as a transport between the apps and the Translation Exchange platform.
Translation Exchange stores all translations in Universal Translation Memory (UTM), a graph database which stores all translations with their context, tone, rank and other attributes for accurate matching. This allows translations to be shared across all apps in the Translation Exchange Network. The translation memories of each app are extracted from the UTM graph and are managed by their individual localization teams. During this presentation we will look at some of the features of TML and how it can be used to quickly translate a Laravel application into any number of languages using in-context translation tools. We will also look at how the data is stored and shared across applications using UTM.
5. Every i18n framework has its own “right way”
of doing things, with a different syntax and file
format.
Developers often hack together their own
solutions to try and simplify the process.
No universality
in the current
standards
6. Android .xml
Apple .strings
Apple .plist
Gettext .po
Gettext .pot
Java .properties
Java .xml
Microsoft .resx
Microsoft .resw
Microsoft .resjson
Microsoft .aspx
FILE FORMATS
Lots of translation
Microsoft .rc
PHP .ini
PHP .conf
Laravel .php
Blackberry .rrc
NSIS .insh
QT Linguist .ts
Latex .latex
Docbook .dbk
TBX .tbx
TMX .tmx
XLIFF .xliff
YouTube .sbv
Rails YAML .yaml
Subtitles .srt
MicroDVD .sub
Subviewer .sub
Mozilla Web L10N
Text .txt
CSV Spreadsheet
Excel Spreadsheet
Word Document
7. Extract content into
files
Upload files to a TMS
or an LSP
Wait... Download translated
files
Put translations back
in your app
Repeat when new content is added or changed
BOTTLENECK
File management is a
8. File Management
● Not DRY (Don’t Repeat Yourself)
● Requires content extraction, sync with a TMS or an LSP
● Mini “waterfalls” in the agile process
● Slows down development cycle and releases
● High upfront cost and maintenance
9. How can we make it
BETTER FOR
EVERYONE
TranslationExchange.com
10. What would an ideal solution
look like?
● Consistency
Provide tools that offer a clear and
consistent way for internationalizing
content across all frameworks
● Adaptability
Tools must be extensible and adaptable
and should be able to solve any arising
internationalization and localization
problem
● Contextualization
Allow translators to translate in context
from within the application
● Agility
Keep the development cycle agile -
localization must not add significant
overhead for developers - it must be done
in parallel to the development process
TranslationExchange.com
12. Translation Caching
Static and dynamic cache adapters for
storing translations in your application
Inline Translation Tools
Translation can be done in context of the
application
Access Professional Translators
Connect your application to thousands of
professional translators around the world
Open Source
All SDKs are available on github
Multiple Platforms
Support for PHP, Laravel, Rails, Node,
Python, iOS, Android and more
Universal Translation Memory
Translations are shared across all
applications
Core Benefits of TML SDK
TranslationExchange.com
18. Internationalization
// wrap strings with the tr method
{!! tr("Hello World") !!}
// use interpolation
{!! tr("Hello {user}", ["user" => "Michael"]) !!}
// and many other features of TML syntax...
{!! tr("You have {count || message}", ["count" => 5]) !!}
TranslationExchange.com
20. Translation Markup Language
● Developer friendly syntax for marking up application text.
● Supports language context rules and language cases, making
translations accurate for any language.
TranslationExchange.com
21. TML for Laravel Basics
Hello World
“tr” method is available in Rails, PHP, Java, Obj C, Python, Javascript, Node.JS, Ember, Angular, etc...
{!! tr('Hello World') !!}
22. Descriptions
tr('Eats shoots and leaves', 'a panda')
Eats shoots and leaves
tr('Eats shoots and leaves', 'a violent restaurant patron')
35. Caching Options
Static Cache
File based cache. Loaded into the process
memory and must be deployed with the
source code. Each process contains the
entire translation cache.
Dynamic Cache
Redis, Memcached (and others) updated
from CDN release. Cache is shared
across all processes. Can be deployed
without restarting servers.
TranslationExchange.com
36. How is Translation Done?
Machine Translation
provided by Google,
Microsoft and Yandex.
Translations are ranked to
get the best result.
Crowdsourced Translation
Some developers may
choose to use their own
users to translate their
content, similar to how
Facebook and Twitter
translated their sites.
Professional Translation
Order are received and
processed by our partners
and are made available in our
system within hours.
TranslationExchange.com
38. ● Translations should be reusable across
multiple projects
● Each translation key can have many
translation options for a language based
on context
● Translation keys and translations are
unique and are only stored once in the
entire system
What is UTM?
39. Hello World Hola Mundo
안녕하세요
Привет Мир
Hallo Welt עולם שלום
你好,世界
UTM Graph