SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Powered by Translation Exchange
Translation Markup Language
for Objective C
TranslationExchange.com
Michael Berkovich
michael@translationexchange.com
@translationx
TranslationExchange.com
Localization is hard
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
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
Extract content into
files (genstrings)
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
Resource file management is a
How can we make it
BETTER FOR
EVERYONE?
TranslationExchange.com
An Ideal Solution
● Consistent
Provide tools that offer a clear and
consistent way for internationalizing
content across all frameworks
● Adaptable
Tools should be extensible and adaptable
and must be able to solve any arising
internationalization and localization
problem
● Contextual
Allow translators to translate in context
from within the application
● Agile
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
An integrated and automated continuous localization
あ
A
Translation Management
Service
Global CDN
Local Cache
iOS Application
with TMLKit
A Better Way
TranslationExchange.com
Translation Caching
No impact on app performance, translations
are loaded from local cache.
Inline Translation Tools
Translation can be done within app context
Access Professional Translators
Connect your application to thousands of
professional translators around the world
Open Source
Source code is available on github
Multiple Platforms
Support for iOS, Rails, Node, PHP, Laravel,
Python, Django, J2EE, Android and more
Universal Translation Memory
Translations are shared across all
applications
Core Benefits of TML SDK
TranslationExchange.com
Getting Started
TranslationExchange.com
pod "TMLKit"
Integration
// Podfile
TranslationExchange.com
Configuration
// main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool {
[TML sharedInstanceWithApplicationKey:@"YOUR_APP_KEY"];
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class])
);
}
}
TranslationExchange.com
Integration Options
● Fully automatic
Just activate the SDK, and we do the rest
● Based on NSLocalizedString macros
Activate the SDK, include our header and we take over
● Using TML macros
Enhance the translations with TML macros
TranslationExchange.com
Internationalization
// wrap strings with the tr method
NSLocalizedString(@"Hello World", nil)
// use interpolation
TMLLocalizedString(@"Hello {user}", @{@"user": @"Alex"})
// and many other features of TML syntax...
TMLLocalizedAttributedString(@"Hello [bold: World]")
TranslationExchange.com
Translation Markup Language (TML)
● Simple, yet powerful, syntax for marking up application strings.
● Supports language context rules and language cases, making
translations accurate for any language.
● Backwards compatible to standard I18n
TranslationExchange.com
DEMO
TML for Objective C
Basics
Hello World
Identical syntax is available in Rails, PHP, Java, Python, Javascript, Node.JS, Ember, Angular, etc...
TMLLocalizedString(@”Hello World”)
Descriptions
TMLLocalizedString(@”Eats shoots and leaves”, @”a panda”)
Eats shoots and leaves
TMLLocalizedString(@”Eats shoots and leaves”, @”a violent restaurant patron”)
Interpolation
TMLLocalizedString(@”Hello {name}”, @{@”name”: @”John”})
Hello John
Decoration Tokens
Hello WorldWorld
TMLLocalizedAttributedString('Hello <bold>World</bold>', @{
@”bold”: @{
@"font": [UIFont fontWithName:@"ChalkboardSE-Bold" size:14]
}
})
Uses Native Decoration Methods
Decoration Tokens
TMLLocalizedAttributedString(
@”Hello <indent>World</indent>”,
@{@”indent”: @”<strong>{$0}</strong>”]
)
TMLLocalizedAttributedString(
@”Hello <strong>World</strong>”
)
Hello WorldWorld
or
TMLLocalizedAttributedString(
'[bold: {user}] completed [bold: {count || mile}] on [bold: {user | his, her} last run].',
@{
@'user’: userObject,
@'count’: milesCount
}
)
More Complex Example
Michael completed 3 miles on his last run.
TMLLocalizedString(@”Welcome to {user::pos} blog.”, @{
@”user”: @”Michael”
})
Language Cases
Welcome to Michael’s blog.
Ordinals
This is your second warning
TMLLocalizedString('This is your {count::ord} warning', @{
@”count”: @2
})
Genstrings
This is your second warning
$ genstrings ./classes -a TOKEN
TranslationExchange.com
TML
DEMO
Distribution Options
Packaged Bundle
Add a release bundle to your app and it will
be unpacked and configured the first time
application is run.
Dynamic Bundle
Release translations to the CDN and they
will be synced down to your application.
TranslationExchange.com
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
UNIVERSAL
TRANSLATION
MEMORY
● 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?
Hello World Hola Mundo
안녕하세요
Привет Мир
Hallo Welt ‫עולם‬ ‫שלום‬
你好,世界
UTM Graph
SUMMARY
& CONCLUSION
Resources
TMLKit https://github.com/translationexchange/tml-objc
Documentation http://docs.translationexchange.com
Blog http://blog.translationexchange.com
Facebook https://www.facebook.com/translationexchange
Twitter @translationx
Support support@translationexchange.com
Thank you
QUESTIONS?

Contenu connexe

Tendances (20)

Exploring Anko Components, Kotlin, Android
Exploring Anko Components, Kotlin, AndroidExploring Anko Components, Kotlin, Android
Exploring Anko Components, Kotlin, Android
 
Elixir and Phoenix for Rubyists
Elixir and Phoenix for RubyistsElixir and Phoenix for Rubyists
Elixir and Phoenix for Rubyists
 
CGI Introduction
CGI IntroductionCGI Introduction
CGI Introduction
 
CGI Presentation
CGI PresentationCGI Presentation
CGI Presentation
 
Automation testing using Ruby with Cucumber in Docker
Automation testing using Ruby with Cucumber in DockerAutomation testing using Ruby with Cucumber in Docker
Automation testing using Ruby with Cucumber in Docker
 
Concurrency in Elixir with OTP
Concurrency in Elixir with OTPConcurrency in Elixir with OTP
Concurrency in Elixir with OTP
 
Cgi
CgiCgi
Cgi
 
Bootstrap |> Elixir - Easy fun for busy developers
Bootstrap |> Elixir - Easy fun for busy developersBootstrap |> Elixir - Easy fun for busy developers
Bootstrap |> Elixir - Easy fun for busy developers
 
C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607
 
Python cgi programming
Python cgi programmingPython cgi programming
Python cgi programming
 
Elixir and OTP
Elixir and OTPElixir and OTP
Elixir and OTP
 
DaNode - A home made web server in D
DaNode - A home made web server in DDaNode - A home made web server in D
DaNode - A home made web server in D
 
Common gateway interface
Common gateway interfaceCommon gateway interface
Common gateway interface
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
Prersentation
PrersentationPrersentation
Prersentation
 
Common Gateway Interface ppt
Common Gateway Interface pptCommon Gateway Interface ppt
Common Gateway Interface ppt
 
Cgi
CgiCgi
Cgi
 
Drupal 8 multilingual APIs
Drupal 8 multilingual APIsDrupal 8 multilingual APIs
Drupal 8 multilingual APIs
 
Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?Future of Kotlin - How agile can language development be?
Future of Kotlin - How agile can language development be?
 
Visual studio.net
Visual studio.netVisual studio.net
Visual studio.net
 

Similaire à Tml for Objective C

Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLsintelliyole
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_netNico Ludwig
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010Satish Verma
 
Software Language Design & Engineering: Mobl & Spoofax
Software Language Design & Engineering: Mobl & SpoofaxSoftware Language Design & Engineering: Mobl & Spoofax
Software Language Design & Engineering: Mobl & SpoofaxEelco Visser
 
Titanium appcelerator my first app
Titanium appcelerator my first appTitanium appcelerator my first app
Titanium appcelerator my first appAlessio Ricco
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)lennartkats
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NETsalonityagi
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Guillaume Laforge
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Itzik Kotler
 
Net framework
Net frameworkNet framework
Net frameworkjhsri
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microserviceGiulio De Donato
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 

Similaire à Tml for Objective C (20)

Tml for Laravel
Tml for LaravelTml for Laravel
Tml for Laravel
 
Tml for Ruby on Rails
Tml for Ruby on RailsTml for Ruby on Rails
Tml for Ruby on Rails
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net(1) c sharp introduction_basics_dot_net
(1) c sharp introduction_basics_dot_net
 
Visual Studio .NET2010
Visual Studio .NET2010Visual Studio .NET2010
Visual Studio .NET2010
 
Software Language Design & Engineering: Mobl & Spoofax
Software Language Design & Engineering: Mobl & SpoofaxSoftware Language Design & Engineering: Mobl & Spoofax
Software Language Design & Engineering: Mobl & Spoofax
 
Titanium appcelerator my first app
Titanium appcelerator my first appTitanium appcelerator my first app
Titanium appcelerator my first app
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NET
 
Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007Groovy Update - JavaPolis 2007
Groovy Update - JavaPolis 2007
 
ColdBox i18N
ColdBox i18N ColdBox i18N
ColdBox i18N
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)Hack Like It's 2013 (The Workshop)
Hack Like It's 2013 (The Workshop)
 
Net framework
Net frameworkNet framework
Net framework
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Xtext Webinar
Xtext WebinarXtext Webinar
Xtext Webinar
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Dernier (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

Tml for Objective C

  • 1. Powered by Translation Exchange Translation Markup Language for Objective C TranslationExchange.com
  • 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 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 (genstrings) 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 Resource file management is a
  • 8. How can we make it BETTER FOR EVERYONE? TranslationExchange.com
  • 9. An Ideal Solution ● Consistent Provide tools that offer a clear and consistent way for internationalizing content across all frameworks ● Adaptable Tools should be extensible and adaptable and must be able to solve any arising internationalization and localization problem ● Contextual Allow translators to translate in context from within the application ● Agile 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
  • 10. An integrated and automated continuous localization あ A Translation Management Service Global CDN Local Cache iOS Application with TMLKit A Better Way TranslationExchange.com
  • 11. Translation Caching No impact on app performance, translations are loaded from local cache. Inline Translation Tools Translation can be done within app context Access Professional Translators Connect your application to thousands of professional translators around the world Open Source Source code is available on github Multiple Platforms Support for iOS, Rails, Node, PHP, Laravel, Python, Django, J2EE, Android and more Universal Translation Memory Translations are shared across all applications Core Benefits of TML SDK TranslationExchange.com
  • 14. Configuration // main.m #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { [TML sharedInstanceWithApplicationKey:@"YOUR_APP_KEY"]; return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]) ); } } TranslationExchange.com
  • 15. Integration Options ● Fully automatic Just activate the SDK, and we do the rest ● Based on NSLocalizedString macros Activate the SDK, include our header and we take over ● Using TML macros Enhance the translations with TML macros TranslationExchange.com
  • 16. Internationalization // wrap strings with the tr method NSLocalizedString(@"Hello World", nil) // use interpolation TMLLocalizedString(@"Hello {user}", @{@"user": @"Alex"}) // and many other features of TML syntax... TMLLocalizedAttributedString(@"Hello [bold: World]") TranslationExchange.com
  • 17. Translation Markup Language (TML) ● Simple, yet powerful, syntax for marking up application strings. ● Supports language context rules and language cases, making translations accurate for any language. ● Backwards compatible to standard I18n TranslationExchange.com
  • 18. DEMO
  • 19. TML for Objective C Basics Hello World Identical syntax is available in Rails, PHP, Java, Python, Javascript, Node.JS, Ember, Angular, etc... TMLLocalizedString(@”Hello World”)
  • 20. Descriptions TMLLocalizedString(@”Eats shoots and leaves”, @”a panda”) Eats shoots and leaves TMLLocalizedString(@”Eats shoots and leaves”, @”a violent restaurant patron”)
  • 22. Decoration Tokens Hello WorldWorld TMLLocalizedAttributedString('Hello <bold>World</bold>', @{ @”bold”: @{ @"font": [UIFont fontWithName:@"ChalkboardSE-Bold" size:14] } }) Uses Native Decoration Methods
  • 23. Decoration Tokens TMLLocalizedAttributedString( @”Hello <indent>World</indent>”, @{@”indent”: @”<strong>{$0}</strong>”] ) TMLLocalizedAttributedString( @”Hello <strong>World</strong>” ) Hello WorldWorld or
  • 24. TMLLocalizedAttributedString( '[bold: {user}] completed [bold: {count || mile}] on [bold: {user | his, her} last run].', @{ @'user’: userObject, @'count’: milesCount } ) More Complex Example Michael completed 3 miles on his last run.
  • 25. TMLLocalizedString(@”Welcome to {user::pos} blog.”, @{ @”user”: @”Michael” }) Language Cases Welcome to Michael’s blog.
  • 26. Ordinals This is your second warning TMLLocalizedString('This is your {count::ord} warning', @{ @”count”: @2 })
  • 27. Genstrings This is your second warning $ genstrings ./classes -a TOKEN
  • 29. Distribution Options Packaged Bundle Add a release bundle to your app and it will be unpacked and configured the first time application is run. Dynamic Bundle Release translations to the CDN and they will be synced down to your application. TranslationExchange.com
  • 30. 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
  • 32. ● 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?
  • 33. Hello World Hola Mundo 안녕하세요 Привет Мир Hallo Welt ‫עולם‬ ‫שלום‬ 你好,世界 UTM Graph
  • 35. Resources TMLKit https://github.com/translationexchange/tml-objc Documentation http://docs.translationexchange.com Blog http://blog.translationexchange.com Facebook https://www.facebook.com/translationexchange Twitter @translationx Support support@translationexchange.com