SlideShare a Scribd company logo
1 of 30
@sergiandreplace Tweet about it: #bcngtug
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Working in localization for more than 10 years
• Several multillingual projects for big sw
companies like SAP, Microsoft, CA, etc…
• Some more years of experience in development
• Exploring everything related to Android and other
mobile platforms in the last months.
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Going global: some definitions
• What’s localization: more definitions. But more
specific this time
• Android 18N + L10N: how to proceed with the
apps.
• Hands-on!
@sergiandreplace Tweet about it: #bcngtug
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Globalization (G11N)
To plan the design and development methods for a product in advance, keeping in mind
a multicultural audience
• Internationalization (I18N)
Encompasses the planning and preparation stages for a product that is built by design to
support global markets.
• Localization (L10N)
Adaptation of the product for a specific market
"What is Globalization?". LISA. Romainmôtier, Switzerland: Localization Industry
Standards Association. Retrieved 6 September 2010.
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
The product
Product
design
Product
Development
Product
testing and
(QA)
Product
localisation
Local product
testing and
(QA)
Local product
marketing
Phase 2 - Localization Phase 1 - Internationalization
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• No general agreement
• Translation is a one-direction process
• Localization is evolving with the product
• Localization includes other elements:
– Graphics, colors, CSS, etc.
– Currencies, dates and other country-specific formats
– Etc.
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
Language family ISO 639-1 Language variant
English
en-GB British English
en-US American English
en-CA Canadian English
Spanish
es-ES Spanish as written and spoken in Spain)
es-MX Mexican Spanish
es-AR Argentine Spanish
Catalan ca-ES Catalan as written and spoken in Spain
Portugese
pt-PT Portuguese as written and spoken in Portugal
pt-BR Brazilian Portugese
Chinese
zh-CN Mainland China, simplified characters
zh-TW Taiwan, traditional characters
zh-HK Hong Kong, traditional characters
@sergiandreplace Tweet about it: #bcngtug
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Translation: by translator or specialist? Or
Machine Translation?
• Review: what kind of review? Linguistic?
Technical? How many?
• DTP
• Engineering
• Testing
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
Product
Software (UI)
Help (UA) Web content
Documentation
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• For software: xml, resource files, string files, etc.
• For help: xml, html, sgml, Word, etc
• For web: xml, html, etc
• For documentation: sgml, Word, authoring tools
(FM, InDesign, etc.)
• For graphics: psd, jpg/png/gif/bmp/tif/etc
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• For software: Excel, csv
• For help: wiki, txt files
• For web: url
• For documentation: fax, scan.
• For graphics: embedded graphics
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Filters: transform formats into black box
• Translation Memory: a database of billingual
pairs
• Glossary: a list of term translations for reference
(plust meta-information like definitions, terms,
etc).
• Machine translation: a sw with ability to translate
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• CAT (Computer Aided Translation):
– SDL Trados Studio / SDL Passolo (doc/sw)
– Across (doc)
– Alchemy Catalyst (sw)
– Start Transit (doc/sw)
– Customer propietary tools
– Etc (very big list)
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Omega T:
Existing for years, but missing some «professionality»
• myGengo String
New players, missing key elements, but very promising.
Very good for Android.
• Google translator toolkit
They understand the bussines. Very good system, but,
do not support xml.
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Machine Translation: it’s a reality! It came to stay!
A lot of misconcepctions and false myths!
• Crowdsourcing translation: Facebook case vs.
Linkedin case
• Open Source is starting to increase…
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• myGengo
• Proz
• Localization vendors:
– Logoscript
– Lionbridge
– WiiPro
– Etc.
@sergiandreplace Tweet about it: #bcngtug
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
1. Indentify localizable items (images, text, etc) and
target languages
2. Separate from code
3. Perform «abstracted» development
4. Translate!
5. Integrate languages
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• All localizable elements should be out-of-code
• Resource folders preffix containing:
– Images
– Layouts
– Strings!
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• A suffix indicates folder
specialization
• It can be combined with
other elements
(orientation, density,
screen size, etc…)
• Distinguish between
language and region
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Language has precedence over all suffixes EXCEPT
MCC and MNC (mobile country code and mobile
network code).
• ALWAYS include default resources
• KISS (Keep It Simple, Stupid)
• For flavors, just include “different” strings
• Are you using TTS?
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Java: R class (R.resource_type.resource_name)
R.drawable.app_icon
• XML: @type/resource
• To get the locale:
context.getResources().getConfiguration().locale.getDisplayName();
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Setting a locale (per Activity!)
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Do not use flags! They always offend somebody.
• Evaluate the need for translation. Maybe is better
to improve usability
• Be politically correct! Gender, social class, etc.
• Quality, quality, quality… and quality!
@sergiandreplace Tweet about it: #bcngtug
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• Upload a strings xml to myGengo
• Translate
• Update
• Generat
@sergiandreplace Tweet about it: #bcngtug
Creating multillingual Android applications
• We are finished. Do you have any question?
• You can contact me, don’t be shy:
Mail: sergi@sergiandreplace.com
Twitter: @sergiandreplace
Website: http://sergiandreplace.com
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported
License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter
to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

More Related Content

What's hot

GDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaGDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaPeter Kofler
 
The Ring programming language version 1.2 book - Part 77 of 84
The Ring programming language version 1.2 book - Part 77 of 84The Ring programming language version 1.2 book - Part 77 of 84
The Ring programming language version 1.2 book - Part 77 of 84Mahmoud Samir Fayed
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Peter Kofler
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Peter Kofler
 
Top Programming Language of 2018
Top Programming Language of 2018Top Programming Language of 2018
Top Programming Language of 2018Rock Interview
 
Eclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)Peter Kofler
 
Demand driven Applications with GraphQL
Demand driven Applications with GraphQLDemand driven Applications with GraphQL
Demand driven Applications with GraphQLVinci Rufus
 
The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88Mahmoud Samir Fayed
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Peter Kofler
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31Mahmoud Samir Fayed
 
[DevRelCon Tokyo 2019] Developer Experience Matters
[DevRelCon Tokyo 2019] Developer Experience Matters [DevRelCon Tokyo 2019] Developer Experience Matters
[DevRelCon Tokyo 2019] Developer Experience Matters Tomomi Imura
 
Null safety in dart and flutter , the whole story!
Null safety in dart and flutter , the whole story!Null safety in dart and flutter , the whole story!
Null safety in dart and flutter , the whole story!Ahmed Abu Eldahab
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Peter Kofler
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)Peter Kofler
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30Mahmoud Samir Fayed
 

What's hot (20)

GDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaGDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran Canaria
 
Php course-session1
Php course-session1Php course-session1
Php course-session1
 
The Ring programming language version 1.2 book - Part 77 of 84
The Ring programming language version 1.2 book - Part 77 of 84The Ring programming language version 1.2 book - Part 77 of 84
The Ring programming language version 1.2 book - Part 77 of 84
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)
 
Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)Code Quality Assurance v4 (2013)
Code Quality Assurance v4 (2013)
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
 
Top Programming Language of 2018
Top Programming Language of 2018Top Programming Language of 2018
Top Programming Language of 2018
 
Eclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan HerrmannEclipse Day India 2015 - Keynote - Stephan Herrmann
Eclipse Day India 2015 - Keynote - Stephan Herrmann
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)JUnit Boot Camp (GeeCON 2016)
JUnit Boot Camp (GeeCON 2016)
 
Demand driven Applications with GraphQL
Demand driven Applications with GraphQLDemand driven Applications with GraphQL
Demand driven Applications with GraphQL
 
The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88The Ring programming language version 1.3 book - Part 4 of 88
The Ring programming language version 1.3 book - Part 4 of 88
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)
 
The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31The Ring programming language version 1.4.1 book - Part 2 of 31
The Ring programming language version 1.4.1 book - Part 2 of 31
 
[DevRelCon Tokyo 2019] Developer Experience Matters
[DevRelCon Tokyo 2019] Developer Experience Matters [DevRelCon Tokyo 2019] Developer Experience Matters
[DevRelCon Tokyo 2019] Developer Experience Matters
 
Null safety in dart and flutter , the whole story!
Null safety in dart and flutter , the whole story!Null safety in dart and flutter , the whole story!
Null safety in dart and flutter , the whole story!
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)
 
Cucumber
CucumberCucumber
Cucumber
 
The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)The Brutal Refactoring Game (2013)
The Brutal Refactoring Game (2013)
 
The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30The Ring programming language version 1.4 book - Part 2 of 30
The Ring programming language version 1.4 book - Part 2 of 30
 

Similar to Creating multillingual apps for android

How to create software that is ready for the world
How to create software that is ready for the worldHow to create software that is ready for the world
How to create software that is ready for the worldBrian Kelly
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesGiulio De Donato
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected DevelopmentJim McKeeth
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersKinoma
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICTDSCUSICT
 
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!Serdar Basegmez
 
The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210Mahmoud Samir Fayed
 
Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Keith Boyd
 
You’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive WebYou’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive WebDavid Sherwin
 
Mobile app Portfolio - Daphnis Labs
Mobile app Portfolio - Daphnis LabsMobile app Portfolio - Daphnis Labs
Mobile app Portfolio - Daphnis LabsSamanyu Chopra
 
Localization: How to do a global project
Localization: How to do a global projectLocalization: How to do a global project
Localization: How to do a global projectAlconost
 
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023Pedro Vicente
 
Lavacon 2011 - Managing the Localization Lifecycle
Lavacon 2011 - Managing the Localization LifecycleLavacon 2011 - Managing the Localization Lifecycle
Lavacon 2011 - Managing the Localization Lifecycledgcaller
 
AIM | HDC 2016 Globalization As a Service
AIM | HDC 2016 Globalization As a ServiceAIM | HDC 2016 Globalization As a Service
AIM | HDC 2016 Globalization As a ServiceRamzi Yassine
 
What Programming Language Do You Require for Your Next Project & How to Hire ...
What Programming Language Do You Require for Your Next Project & How to Hire ...What Programming Language Do You Require for Your Next Project & How to Hire ...
What Programming Language Do You Require for Your Next Project & How to Hire ...Programmers.io
 
Continuous Delivery at Gogo with Spinnaker and Foremast
Continuous Delivery at Gogo with Spinnaker and ForemastContinuous Delivery at Gogo with Spinnaker and Foremast
Continuous Delivery at Gogo with Spinnaker and ForemastN. Douglas Campbell
 

Similar to Creating multillingual apps for android (20)

How to create software that is ready for the world
How to create software that is ready for the worldHow to create software that is ready for the world
How to create software that is ready for the world
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
 
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
 
Embarcadero's Connected Development
Embarcadero's Connected DevelopmentEmbarcadero's Connected Development
Embarcadero's Connected Development
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software Developers
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICT
 
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!
Engage 2020: Six Polite Ways to Design a RESTful API for Your Application!
 
The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210The Ring programming language version 1.9 book - Part 6 of 210
The Ring programming language version 1.9 book - Part 6 of 210
 
About programming languages
About programming languagesAbout programming languages
About programming languages
 
Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"
 
Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015
 
You’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive WebYou’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
 
Mobile app Portfolio - Daphnis Labs
Mobile app Portfolio - Daphnis LabsMobile app Portfolio - Daphnis Labs
Mobile app Portfolio - Daphnis Labs
 
PhoneGap Day EU 2016
PhoneGap Day EU 2016PhoneGap Day EU 2016
PhoneGap Day EU 2016
 
Localization: How to do a global project
Localization: How to do a global projectLocalization: How to do a global project
Localization: How to do a global project
 
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023
A Multiplatform, Multi-Tenant Challenge - Droidcon Lisbon 2023
 
Lavacon 2011 - Managing the Localization Lifecycle
Lavacon 2011 - Managing the Localization LifecycleLavacon 2011 - Managing the Localization Lifecycle
Lavacon 2011 - Managing the Localization Lifecycle
 
AIM | HDC 2016 Globalization As a Service
AIM | HDC 2016 Globalization As a ServiceAIM | HDC 2016 Globalization As a Service
AIM | HDC 2016 Globalization As a Service
 
What Programming Language Do You Require for Your Next Project & How to Hire ...
What Programming Language Do You Require for Your Next Project & How to Hire ...What Programming Language Do You Require for Your Next Project & How to Hire ...
What Programming Language Do You Require for Your Next Project & How to Hire ...
 
Continuous Delivery at Gogo with Spinnaker and Foremast
Continuous Delivery at Gogo with Spinnaker and ForemastContinuous Delivery at Gogo with Spinnaker and Foremast
Continuous Delivery at Gogo with Spinnaker and Foremast
 

More from Sergi Martínez

Kotlin, a modern language for modern times
Kotlin, a modern language for modern timesKotlin, a modern language for modern times
Kotlin, a modern language for modern timesSergi Martínez
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?Sergi Martínez
 
What is flutter and why should i care? Lightning talk
What is flutter and why should i care? Lightning talkWhat is flutter and why should i care? Lightning talk
What is flutter and why should i care? Lightning talkSergi Martínez
 
Let’s talk about star wars with Dialog Flow
Let’s talk about star wars with Dialog FlowLet’s talk about star wars with Dialog Flow
Let’s talk about star wars with Dialog FlowSergi Martínez
 
Database handling with room
Database handling with roomDatabase handling with room
Database handling with roomSergi Martínez
 
Realm or: How I learned to stop worrying and love my app database
Realm or: How I learned to stop worrying and love my app databaseRealm or: How I learned to stop worrying and love my app database
Realm or: How I learned to stop worrying and love my app databaseSergi Martínez
 
It's the arts! Playing around with the Android canvas
It's the arts! Playing around with the Android canvasIt's the arts! Playing around with the Android canvas
It's the arts! Playing around with the Android canvasSergi Martínez
 
Introduction to Android Fragments
Introduction to Android FragmentsIntroduction to Android Fragments
Introduction to Android FragmentsSergi Martínez
 
Píldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª partePíldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª parteSergi Martínez
 

More from Sergi Martínez (14)

Kotlin, a modern language for modern times
Kotlin, a modern language for modern timesKotlin, a modern language for modern times
Kotlin, a modern language for modern times
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?
 
What is flutter and why should i care? Lightning talk
What is flutter and why should i care? Lightning talkWhat is flutter and why should i care? Lightning talk
What is flutter and why should i care? Lightning talk
 
Let’s talk about star wars with Dialog Flow
Let’s talk about star wars with Dialog FlowLet’s talk about star wars with Dialog Flow
Let’s talk about star wars with Dialog Flow
 
Database handling with room
Database handling with roomDatabase handling with room
Database handling with room
 
Realm or: How I learned to stop worrying and love my app database
Realm or: How I learned to stop worrying and love my app databaseRealm or: How I learned to stop worrying and love my app database
Realm or: How I learned to stop worrying and love my app database
 
Android data binding
Android data bindingAndroid data binding
Android data binding
 
It's the arts! Playing around with the Android canvas
It's the arts! Playing around with the Android canvasIt's the arts! Playing around with the Android canvas
It's the arts! Playing around with the Android canvas
 
Smartphones
SmartphonesSmartphones
Smartphones
 
Introduction to Android Fragments
Introduction to Android FragmentsIntroduction to Android Fragments
Introduction to Android Fragments
 
Android master class
Android master classAndroid master class
Android master class
 
Píldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª partePíldoras android i. Intro - 2ª parte
Píldoras android i. Intro - 2ª parte
 
Introducción a mobclix
Introducción a mobclixIntroducción a mobclix
Introducción a mobclix
 
Admob y yo
Admob y yoAdmob y yo
Admob y yo
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 

Creating multillingual apps for android

  • 2. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Working in localization for more than 10 years • Several multillingual projects for big sw companies like SAP, Microsoft, CA, etc… • Some more years of experience in development • Exploring everything related to Android and other mobile platforms in the last months.
  • 3. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Going global: some definitions • What’s localization: more definitions. But more specific this time • Android 18N + L10N: how to proceed with the apps. • Hands-on!
  • 5. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Globalization (G11N) To plan the design and development methods for a product in advance, keeping in mind a multicultural audience • Internationalization (I18N) Encompasses the planning and preparation stages for a product that is built by design to support global markets. • Localization (L10N) Adaptation of the product for a specific market "What is Globalization?". LISA. Romainmôtier, Switzerland: Localization Industry Standards Association. Retrieved 6 September 2010.
  • 6. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications The product Product design Product Development Product testing and (QA) Product localisation Local product testing and (QA) Local product marketing Phase 2 - Localization Phase 1 - Internationalization
  • 7. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • No general agreement • Translation is a one-direction process • Localization is evolving with the product • Localization includes other elements: – Graphics, colors, CSS, etc. – Currencies, dates and other country-specific formats – Etc.
  • 8. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications Language family ISO 639-1 Language variant English en-GB British English en-US American English en-CA Canadian English Spanish es-ES Spanish as written and spoken in Spain) es-MX Mexican Spanish es-AR Argentine Spanish Catalan ca-ES Catalan as written and spoken in Spain Portugese pt-PT Portuguese as written and spoken in Portugal pt-BR Brazilian Portugese Chinese zh-CN Mainland China, simplified characters zh-TW Taiwan, traditional characters zh-HK Hong Kong, traditional characters
  • 10. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Translation: by translator or specialist? Or Machine Translation? • Review: what kind of review? Linguistic? Technical? How many? • DTP • Engineering • Testing
  • 11. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications Product Software (UI) Help (UA) Web content Documentation
  • 12. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • For software: xml, resource files, string files, etc. • For help: xml, html, sgml, Word, etc • For web: xml, html, etc • For documentation: sgml, Word, authoring tools (FM, InDesign, etc.) • For graphics: psd, jpg/png/gif/bmp/tif/etc
  • 13. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • For software: Excel, csv • For help: wiki, txt files • For web: url • For documentation: fax, scan. • For graphics: embedded graphics
  • 14. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Filters: transform formats into black box • Translation Memory: a database of billingual pairs • Glossary: a list of term translations for reference (plust meta-information like definitions, terms, etc). • Machine translation: a sw with ability to translate
  • 15. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • CAT (Computer Aided Translation): – SDL Trados Studio / SDL Passolo (doc/sw) – Across (doc) – Alchemy Catalyst (sw) – Start Transit (doc/sw) – Customer propietary tools – Etc (very big list)
  • 16. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Omega T: Existing for years, but missing some «professionality» • myGengo String New players, missing key elements, but very promising. Very good for Android. • Google translator toolkit They understand the bussines. Very good system, but, do not support xml.
  • 17. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Machine Translation: it’s a reality! It came to stay! A lot of misconcepctions and false myths! • Crowdsourcing translation: Facebook case vs. Linkedin case • Open Source is starting to increase…
  • 18. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • myGengo • Proz • Localization vendors: – Logoscript – Lionbridge – WiiPro – Etc.
  • 20. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications 1. Indentify localizable items (images, text, etc) and target languages 2. Separate from code 3. Perform «abstracted» development 4. Translate! 5. Integrate languages
  • 21. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • All localizable elements should be out-of-code • Resource folders preffix containing: – Images – Layouts – Strings!
  • 22. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • A suffix indicates folder specialization • It can be combined with other elements (orientation, density, screen size, etc…) • Distinguish between language and region
  • 23. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications
  • 24. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Language has precedence over all suffixes EXCEPT MCC and MNC (mobile country code and mobile network code). • ALWAYS include default resources • KISS (Keep It Simple, Stupid) • For flavors, just include “different” strings • Are you using TTS?
  • 25. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Java: R class (R.resource_type.resource_name) R.drawable.app_icon • XML: @type/resource • To get the locale: context.getResources().getConfiguration().locale.getDisplayName();
  • 26. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Setting a locale (per Activity!)
  • 27. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Do not use flags! They always offend somebody. • Evaluate the need for translation. Maybe is better to improve usability • Be politically correct! Gender, social class, etc. • Quality, quality, quality… and quality!
  • 29. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • Upload a strings xml to myGengo • Translate • Update • Generat
  • 30. @sergiandreplace Tweet about it: #bcngtug Creating multillingual Android applications • We are finished. Do you have any question? • You can contact me, don’t be shy: Mail: sergi@sergiandreplace.com Twitter: @sergiandreplace Website: http://sergiandreplace.com This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.