SlideShare a Scribd company logo
translationexchange.com
Powered by Translation Exchange
Translation Markup Language
for Ruby on Rails
Michael Berkovich
michael@translationexchange.com
@translationx
translationexchange.com
Localization is cumbersome
translationexchange.com
There are many
standards, but little
guidance.
“
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
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
Babel Flash .xml
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
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
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
How can we make it
BETTER FOR
EVERYONE
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
あ
A
Translation Management
Service
Global CDN
Local Cache
Application
with SDK
A Better Way
A truly automated and continuous localization
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 Rails, Node, PHP, Python, iOS,
Android and more
Universal Translation Memory
Translations are shared across all
applications
translationexchange.com
Core Benefits
Getting Started
translationexchange.com
gem 'tml-rails'
Integration
# Gemfile
translationexchange.com
Configuration
# initializers/tml.rb
Tml.configure do |config|
config.application = {
key: “YOUR_APPLICATION_KEY”
}
end
translationexchange.com
# layouts/application.html.erb
<%= tml_scripts_tag %>
<%= tml_language_selector_tag(:flags) %>
Translation Markup Language
Developer friendly syntax for marking up application content.
Supports language context rules and language cases, making translations
significantly more accurate for any language.
translationexchange.com
Hello World
<%= tr('Hello World') %>
translationexchange.com
Translation Markup Language
tr('Eats shoots and leaves', 'a panda')
Eats shoots and leaves
tr('Eats shoots and leaves', 'a violent restaurant patron')
Translation Markup Language
Description & Context
Hello Michael
translationexchange.com
Translation Markup Language
Data Tokens & Interpolation
<%= tr('Hello {name}', {name:'Michael'}) %>
Hello Michael
<%= tr('Hello [bold: {user}]', {
user: current_user
}) %>
translationexchange.com
Translation Markup Language
Decoration Tokens
Hello Michael
<%= tr('Hello <strong>{user}</strong>', {
user: current_user
}) %>
translationexchange.com
Translation Markup Language
Decoration Tokens
Hello Michael
<%= tr('Hello [bold: {user}]', {
user: current_user,
bold: '<strong>{$0}</strong>'
}) %>
translationexchange.com
Translation Markup Language
Decoration Tokens
You have 5 messages
<%= tr(You have {count || message}', {
count: 5
}) %>
translationexchange.com
Translation Markup Language
Pluralization
Michael uploaded 3 photos
<%= tr('{user} uploaded {count || photo}', {
user: current_user,
count: 3
}) %>
translationexchange.com
Translation Markup Language
Pluralization
Michael liked Anna’s post
<%= tr('{actor} liked {target::pos} post', {
actor: current_user,
target: other_user
}) %>
translationexchange.com
Translation Markup Language
Language Cases
This is your second warning
<%= tr(This is your {count::ord} warning', {
count: 2
}) %>
translationexchange.com
Translation Markup Language
Language Cases
Michael completed 3 miles on his last run.
<%= tr('[link: {user}] completed [bold: {count || mile}]
on {user | his, her} last run.', {
user: current_user,
link: { href: user_path },
count: 3
}) %>
translationexchange.com
Translation Markup Language
Demo
❏ Use TML SDK to localize an online recipes application
❏ Demonstrate crowdsourced localization tools
❏ Deploy translation release and update application realtime
❏ Download release snapshot and run Foody independently from the
service
translationexchange.com
How is Translation Done?
translationexchange.com
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.
Caching Options
translationexchange.com
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.
$ bundle exec rake tml:cache:generate
Dynamic Cache
Redis, Memcached (and others) updated
from CDN release. Cache is shared
across all processes. Can be deployed
without restarting servers.
$ bundle exec rake tml:cache:upgrade
SDKs https://github.com/translationexchange
Documentation http://translationexchange.com/docs
Blog http://blog.translationexchange.com
Foody Source https://github.com/translationexchange/tml-rails-samples-foody
Foody Live http://foody.translationexchange.com
Facebook https://www.facebook.com/translationexchange
Twitter @translationx
Feedback feedback@translationexchange.com
translationexchange.com
Resources
Thank You
Find out more at translationexchange.com
translationexchange.com

More Related Content

What's hot

C compilation process
C compilation processC compilation process
C compilation process
RajKumar Rampelli
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget course
crazyaxe
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
Mickael Istria
 
Ballerina: A Cloud Native Programming Language
Ballerina: A Cloud Native Programming LanguageBallerina: A Cloud Native Programming Language
Ballerina: A Cloud Native Programming Language
WSO2
 
Transpilers(Source-to-Source Compilers)
Transpilers(Source-to-Source Compilers)Transpilers(Source-to-Source Compilers)
Transpilers(Source-to-Source Compilers)
Shivang Bajaniya
 
Overview of microsoft dot net platforms
Overview of microsoft dot net platformsOverview of microsoft dot net platforms
Overview of microsoft dot net platforms
Abhijit B.
 
201801 CSE240 Lecture 04
201801 CSE240 Lecture 04201801 CSE240 Lecture 04
201801 CSE240 Lecture 04
Javier Gonzalez-Sanchez
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
Tim Burks
 
蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
d0nn9n
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPC
Tim Burks
 
Onivim: Modal Editing from the Future
Onivim: Modal Editing from the FutureOnivim: Modal Editing from the Future
Onivim: Modal Editing from the Future
Bryan Phelps
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
Mohammad Kamrul Hasan
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward
 
Challenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective KernelsChallenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective Kernels
ESUG
 
CGI Introduction
CGI IntroductionCGI Introduction
CGI Introduction
Chaffey College
 
Object oriented-programming-in-c-sharp
Object oriented-programming-in-c-sharpObject oriented-programming-in-c-sharp
Object oriented-programming-in-c-sharp
Abefo
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
Tim Burks
 
Onivim 2: Re-architecting for Performance
Onivim 2: Re-architecting for PerformanceOnivim 2: Re-architecting for Performance
Onivim 2: Re-architecting for Performance
Bryan Phelps
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
lennartkats
 
CGI Presentation
CGI PresentationCGI Presentation
CGI Presentation
Sopan Shewale
 

What's hot (20)

C compilation process
C compilation processC compilation process
C compilation process
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget course
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
 
Ballerina: A Cloud Native Programming Language
Ballerina: A Cloud Native Programming LanguageBallerina: A Cloud Native Programming Language
Ballerina: A Cloud Native Programming Language
 
Transpilers(Source-to-Source Compilers)
Transpilers(Source-to-Source Compilers)Transpilers(Source-to-Source Compilers)
Transpilers(Source-to-Source Compilers)
 
Overview of microsoft dot net platforms
Overview of microsoft dot net platformsOverview of microsoft dot net platforms
Overview of microsoft dot net platforms
 
201801 CSE240 Lecture 04
201801 CSE240 Lecture 04201801 CSE240 Lecture 04
201801 CSE240 Lecture 04
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
 
蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPC
 
Onivim: Modal Editing from the Future
Onivim: Modal Editing from the FutureOnivim: Modal Editing from the Future
Onivim: Modal Editing from the Future
 
Programming paradigm and web programming
Programming paradigm and web programmingProgramming paradigm and web programming
Programming paradigm and web programming
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
 
Challenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective KernelsChallenges in Debugging Bootstraps of Reflective Kernels
Challenges in Debugging Bootstraps of Reflective Kernels
 
CGI Introduction
CGI IntroductionCGI Introduction
CGI Introduction
 
Object oriented-programming-in-c-sharp
Object oriented-programming-in-c-sharpObject oriented-programming-in-c-sharp
Object oriented-programming-in-c-sharp
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
 
Onivim 2: Re-architecting for Performance
Onivim 2: Re-architecting for PerformanceOnivim 2: Re-architecting for Performance
Onivim 2: Re-architecting for Performance
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
CGI Presentation
CGI PresentationCGI Presentation
CGI Presentation
 

Viewers also liked

Laura Dent: Single-Source and Localization
Laura Dent: Single-Source and LocalizationLaura Dent: Single-Source and Localization
Laura Dent: Single-Source and Localization
Jack Molisani
 
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
TAUS - The Language Data Network
 
Jim Tivy: The Localization Lifecycle
Jim Tivy: The Localization LifecycleJim Tivy: The Localization Lifecycle
Jim Tivy: The Localization Lifecycle
Jack Molisani
 
WiL Agile Localization event
WiL  Agile Localization eventWiL  Agile Localization event
WiL Agile Localization event
Patricia Gómez Jurado
 
Quality and Localization Effectiveness
Quality and Localization EffectivenessQuality and Localization Effectiveness
Quality and Localization Effectiveness
TAUS - The Language Data Network
 
Yogesh Updated_C.V
Yogesh Updated_C.VYogesh Updated_C.V
Yogesh Updated_C.V
Yogesh Chaturvedi
 
How cloud are you?
How cloud are you?How cloud are you?
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
IXIASOFT
 
Parkour: Lessons in Agility - July 2016
Parkour: Lessons in Agility - July 2016Parkour: Lessons in Agility - July 2016
Parkour: Lessons in Agility - July 2016
patricia_gale
 
Language Service and Technology Providers role in an Agile i18n and L10n proc...
Language Service and Technology Providers role in an Agile i18n and L10n proc...Language Service and Technology Providers role in an Agile i18n and L10n proc...
Language Service and Technology Providers role in an Agile i18n and L10n proc...
TAUS - The Language Data Network
 
Single-Sourcing and Localization stc16
Single-Sourcing and Localization stc16Single-Sourcing and Localization stc16
Single-Sourcing and Localization stc16
Laura Dent
 
2016 content trends
2016 content trends2016 content trends
2016 content trends
Scriptorium Publishing
 
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
TAUS - The Language Data Network
 
Game Localization, Indie devs edition by Silvia Fornós
Game Localization, Indie devs edition by Silvia FornósGame Localization, Indie devs edition by Silvia Fornós
Game Localization, Indie devs edition by Silvia Fornós
Silvia Fornós
 
Localization and DITA: What you Need to Know - LocWorld32
Localization and DITA: What you Need to Know - LocWorld32Localization and DITA: What you Need to Know - LocWorld32
Localization and DITA: What you Need to Know - LocWorld32
IXIASOFT
 
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
Scriptorium Publishing
 
How to write effective requirements in an Agile environment by Matteo Taddei
How to write effective requirements in an Agile environment by Matteo TaddeiHow to write effective requirements in an Agile environment by Matteo Taddei
How to write effective requirements in an Agile environment by Matteo Taddei
Bosnia Agile
 
Agile Linguistic QA, by Vince He, HP Enterprise
Agile Linguistic QA, by Vince He, HP EnterpriseAgile Linguistic QA, by Vince He, HP Enterprise
Agile Linguistic QA, by Vince He, HP Enterprise
TAUS - The Language Data Network
 
Enterprise Localization Trends Webinar
Enterprise Localization Trends WebinarEnterprise Localization Trends Webinar
Enterprise Localization Trends Webinar
Memsource
 
Continuous Globalization Workflow Webinar Slides
Continuous Globalization Workflow Webinar SlidesContinuous Globalization Workflow Webinar Slides
Continuous Globalization Workflow Webinar Slides
Adam Asnes
 

Viewers also liked (20)

Laura Dent: Single-Source and Localization
Laura Dent: Single-Source and LocalizationLaura Dent: Single-Source and Localization
Laura Dent: Single-Source and Localization
 
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
TAUS 2.0 and the Game Changers in Localization (Jaap van der Meer, director o...
 
Jim Tivy: The Localization Lifecycle
Jim Tivy: The Localization LifecycleJim Tivy: The Localization Lifecycle
Jim Tivy: The Localization Lifecycle
 
WiL Agile Localization event
WiL  Agile Localization eventWiL  Agile Localization event
WiL Agile Localization event
 
Quality and Localization Effectiveness
Quality and Localization EffectivenessQuality and Localization Effectiveness
Quality and Localization Effectiveness
 
Yogesh Updated_C.V
Yogesh Updated_C.VYogesh Updated_C.V
Yogesh Updated_C.V
 
How cloud are you?
How cloud are you?How cloud are you?
How cloud are you?
 
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
Move Our DITA Content to Another CCMS? Seriously? - IXIASOFT User Conference ...
 
Parkour: Lessons in Agility - July 2016
Parkour: Lessons in Agility - July 2016Parkour: Lessons in Agility - July 2016
Parkour: Lessons in Agility - July 2016
 
Language Service and Technology Providers role in an Agile i18n and L10n proc...
Language Service and Technology Providers role in an Agile i18n and L10n proc...Language Service and Technology Providers role in an Agile i18n and L10n proc...
Language Service and Technology Providers role in an Agile i18n and L10n proc...
 
Single-Sourcing and Localization stc16
Single-Sourcing and Localization stc16Single-Sourcing and Localization stc16
Single-Sourcing and Localization stc16
 
2016 content trends
2016 content trends2016 content trends
2016 content trends
 
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
Quality estimation: the Holy Grail in the MT scene (Gábor Bessenyei, CEO of M...
 
Game Localization, Indie devs edition by Silvia Fornós
Game Localization, Indie devs edition by Silvia FornósGame Localization, Indie devs edition by Silvia Fornós
Game Localization, Indie devs edition by Silvia Fornós
 
Localization and DITA: What you Need to Know - LocWorld32
Localization and DITA: What you Need to Know - LocWorld32Localization and DITA: What you Need to Know - LocWorld32
Localization and DITA: What you Need to Know - LocWorld32
 
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
LavaCon keynote: But Father, I'm Goldleafing as Fast as I Can!
 
How to write effective requirements in an Agile environment by Matteo Taddei
How to write effective requirements in an Agile environment by Matteo TaddeiHow to write effective requirements in an Agile environment by Matteo Taddei
How to write effective requirements in an Agile environment by Matteo Taddei
 
Agile Linguistic QA, by Vince He, HP Enterprise
Agile Linguistic QA, by Vince He, HP EnterpriseAgile Linguistic QA, by Vince He, HP Enterprise
Agile Linguistic QA, by Vince He, HP Enterprise
 
Enterprise Localization Trends Webinar
Enterprise Localization Trends WebinarEnterprise Localization Trends Webinar
Enterprise Localization Trends Webinar
 
Continuous Globalization Workflow Webinar Slides
Continuous Globalization Workflow Webinar SlidesContinuous Globalization Workflow Webinar Slides
Continuous Globalization Workflow Webinar Slides
 

Similar to Tml for Ruby on Rails

Tml for Laravel
Tml for LaravelTml for Laravel
Tml for Laravel
Michael Berkovich
 
Tml for Objective C
Tml for Objective CTml for Objective C
Tml for Objective C
Michael Berkovich
 
Translation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation MemoryTranslation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation Memory
Michael Berkovich
 
Net framework
Net frameworkNet framework
Net framework
jhsri
 
Revealing C# 5
Revealing C# 5Revealing C# 5
Revealing C# 5
Praveen Prajapati
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
Satish Verma
 
Visual studio
Visual studioVisual studio
Visual studio
anupathak17jul
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
Gustavo Andres Brey
 
Java script
Java scriptJava script
Java script
19TUIT038KAVIARASUM
 
Selenium Training in Chandigarh
Selenium Training in ChandigarhSelenium Training in Chandigarh
Selenium Training in Chandigarh
E2MATRIX
 
.Net overview
.Net overview.Net overview
.Net overview
teach4uin
 
Selenium Training in Jalandhar
Selenium Training in JalandharSelenium Training in Jalandhar
Selenium Training in Jalandhar
E2MATRIX
 
.net framework
.net framework.net framework
.net framework
Ram Sagar Mourya
 
Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.
Brent Noorda
 
Selenium Training in Phagwara
Selenium Training in PhagwaraSelenium Training in Phagwara
Selenium Training in Phagwara
E2MATRIX
 
Selenium Training in Amritsar
Selenium Training in AmritsarSelenium Training in Amritsar
Selenium Training in Amritsar
E2MATRIX
 
Selenium Training in Ludhiana
Selenium Training in LudhianaSelenium Training in Ludhiana
Selenium Training in Ludhiana
E2MATRIX
 
Selenium Training in Mohali
Selenium Training in MohaliSelenium Training in Mohali
Selenium Training in Mohali
E2MATRIX
 
Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
Marko Gargenta
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
Programmer Blog
 

Similar to Tml for Ruby on Rails (20)

Tml for Laravel
Tml for LaravelTml for Laravel
Tml for Laravel
 
Tml for Objective C
Tml for Objective CTml for Objective C
Tml for Objective C
 
Translation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation MemoryTranslation Markup Language and Universal Translation Memory
Translation Markup Language and Universal Translation Memory
 
Net framework
Net frameworkNet framework
Net framework
 
Revealing C# 5
Revealing C# 5Revealing C# 5
Revealing C# 5
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Visual studio
Visual studioVisual studio
Visual studio
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 
Java script
Java scriptJava script
Java script
 
Selenium Training in Chandigarh
Selenium Training in ChandigarhSelenium Training in Chandigarh
Selenium Training in Chandigarh
 
.Net overview
.Net overview.Net overview
.Net overview
 
Selenium Training in Jalandhar
Selenium Training in JalandharSelenium Training in Jalandhar
Selenium Training in Jalandhar
 
.net framework
.net framework.net framework
.net framework
 
Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.
 
Selenium Training in Phagwara
Selenium Training in PhagwaraSelenium Training in Phagwara
Selenium Training in Phagwara
 
Selenium Training in Amritsar
Selenium Training in AmritsarSelenium Training in Amritsar
Selenium Training in Amritsar
 
Selenium Training in Ludhiana
Selenium Training in LudhianaSelenium Training in Ludhiana
Selenium Training in Ludhiana
 
Selenium Training in Mohali
Selenium Training in MohaliSelenium Training in Mohali
Selenium Training in Mohali
 
Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
 

Recently uploaded

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 

Recently uploaded (20)

National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 

Tml for Ruby on Rails

  • 1. translationexchange.com Powered by Translation Exchange Translation Markup Language for Ruby on Rails
  • 4. There are many standards, but little guidance. “
  • 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 Babel Flash .xml 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
  • 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
  • 11. あ A Translation Management Service Global CDN Local Cache Application with SDK A Better Way A truly automated and continuous localization
  • 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 Rails, Node, PHP, Python, iOS, Android and more Universal Translation Memory Translations are shared across all applications translationexchange.com Core Benefits
  • 15. Configuration # initializers/tml.rb Tml.configure do |config| config.application = { key: “YOUR_APPLICATION_KEY” } end translationexchange.com # layouts/application.html.erb <%= tml_scripts_tag %> <%= tml_language_selector_tag(:flags) %>
  • 16. Translation Markup Language Developer friendly syntax for marking up application content. Supports language context rules and language cases, making translations significantly more accurate for any language. translationexchange.com
  • 17. Hello World <%= tr('Hello World') %> translationexchange.com Translation Markup Language
  • 18. tr('Eats shoots and leaves', 'a panda') Eats shoots and leaves tr('Eats shoots and leaves', 'a violent restaurant patron') Translation Markup Language Description & Context
  • 19. Hello Michael translationexchange.com Translation Markup Language Data Tokens & Interpolation <%= tr('Hello {name}', {name:'Michael'}) %>
  • 20. Hello Michael <%= tr('Hello [bold: {user}]', { user: current_user }) %> translationexchange.com Translation Markup Language Decoration Tokens
  • 21. Hello Michael <%= tr('Hello <strong>{user}</strong>', { user: current_user }) %> translationexchange.com Translation Markup Language Decoration Tokens
  • 22. Hello Michael <%= tr('Hello [bold: {user}]', { user: current_user, bold: '<strong>{$0}</strong>' }) %> translationexchange.com Translation Markup Language Decoration Tokens
  • 23. You have 5 messages <%= tr(You have {count || message}', { count: 5 }) %> translationexchange.com Translation Markup Language Pluralization
  • 24. Michael uploaded 3 photos <%= tr('{user} uploaded {count || photo}', { user: current_user, count: 3 }) %> translationexchange.com Translation Markup Language Pluralization
  • 25. Michael liked Anna’s post <%= tr('{actor} liked {target::pos} post', { actor: current_user, target: other_user }) %> translationexchange.com Translation Markup Language Language Cases
  • 26. This is your second warning <%= tr(This is your {count::ord} warning', { count: 2 }) %> translationexchange.com Translation Markup Language Language Cases
  • 27. Michael completed 3 miles on his last run. <%= tr('[link: {user}] completed [bold: {count || mile}] on {user | his, her} last run.', { user: current_user, link: { href: user_path }, count: 3 }) %> translationexchange.com Translation Markup Language
  • 28. Demo ❏ Use TML SDK to localize an online recipes application ❏ Demonstrate crowdsourced localization tools ❏ Deploy translation release and update application realtime ❏ Download release snapshot and run Foody independently from the service translationexchange.com
  • 29. How is Translation Done? translationexchange.com 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.
  • 30. Caching Options translationexchange.com 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. $ bundle exec rake tml:cache:generate Dynamic Cache Redis, Memcached (and others) updated from CDN release. Cache is shared across all processes. Can be deployed without restarting servers. $ bundle exec rake tml:cache:upgrade
  • 31. SDKs https://github.com/translationexchange Documentation http://translationexchange.com/docs Blog http://blog.translationexchange.com Foody Source https://github.com/translationexchange/tml-rails-samples-foody Foody Live http://foody.translationexchange.com Facebook https://www.facebook.com/translationexchange Twitter @translationx Feedback feedback@translationexchange.com translationexchange.com Resources
  • 32. Thank You Find out more at translationexchange.com translationexchange.com