SlideShare a Scribd company logo
1 of 41
The 10 Commandments of 
Building Global Software 
#speaksmartling 
Andrey Akselrod 
CTO and Co-Founder 
Smartling 
Brian Kelly 
VP, Engineering 
TimeTrade
Andrey 
@chelya 
Brian 
@brikelly 
#speaksmartling 
Presenters 
A quick word
The Global Challenge 
& 
…but make it easy to take it 
to a global market later? 
#speaksmartling 
Is it possible to write software for a 
single region first…
Global-Ready Software 
Conventional wisdom 
Internationalization is hard. 
Reality 
It isn’t really that difficult, 
if you consider some 
important things during design 
and development. 
& 
#speaksmartling
Carefully Manage User-Visible Strings 
#speaksmartling 
Rule #1
Carefully Manage User-Visible Strings 
Global Software Development Rule #1 
Maintain user-visible strings separate from 
application code 
This makes it easier to send strings to translators 
and incorporate their work 
String values must be changeable without 
breaking application behavior 
#speaksmartling
Carefully Manage User-Visible Strings 
Global Software Development Rule #1 
Favor existing platform tools rather than 
inventing your own 
#speaksmartling 
For example: 
ResourceBundles for Java 
.resx resources for .NET 
gettext for C 
NSLocalizedString for Objective-C
Carefully Manage User-Visible Strings 
Global Software Development Rule #1 
Concatenation is a recipe for i18n pain 
Bad: user + “has logged on” 
Good: “{0} has logged on”
Carefully Manage User-Visible Strings 
Global Software Development Rule #1 
Include punctuation in your localizable strings 
Helps prevent breakages on other locales 
Even more valuable if text flows right-to-left 
“Don’t forget your spaces!” in French is ”N’oubliez pas vos espaces !” 
UI sorting order should be based on translated 
strings 
Example: “Korea” in Spanish is “Corea”
Rule #2 
Expect User-Visible Strings 
#speaksmartling 
to Grow/Shrink
Expect User-Visible Strings to Grow/Shrink 
Global Software Development Rule #2 
English phrases may double in size when 
translated into other languages 
“Read more” is “Weitere informationen” in German 
They may also drastically shrink when translated into 
other languages 
“To fall in love at first sight” is “一见钟情” in Chinese 
UIs will have to adapt accordingly to 
accommodate different string lengths
Remember the Importance of Context 
#speaksmartling 
Rule #3
Remember the Importance of Context 
Global Software Development Rule #3 
#speaksmartling 
Context is everything for the translator 
The source string might not be enough 
Make as much information as possible available to 
them: UI screenshots, documentation, personas, etc. 
Or best of all, access to the product itself
#speaksmartling
Keep Images Free of Embedded Text 
#speaksmartling 
Rule #4
Keep Images Free of Embedded Text 
Global Software Development Rule #4 
For anything except a company or product 
logo, avoid creating graphics that have text 
embedded directly 
#speaksmartling 
Instead of a low-cost string 
translation, you’ll incur graphic 
design costs if you embed text 
in graphics
Consider Calendar Differences 
#speaksmartling 
Rule #5
Consider Calendar Differences 
Global Software Development Rule #5 
Time formats differ from country to country 
2:30p.m. 14:30 2:30PM 
Date formats vary tremendously 
dd/mm/yyyy mm-dd-yyyy YYYYMMDD 
Don’t rely on abbreviations to denote days, such as 
M T W T F S S “M” works for German (“Montag”), 
but not for Spanish (“lunes”) or Japanese (“月曜日”) 
#speaksmartling
Consider Calendar Differences 
Global Software Development Rule #5 
Not everyone in the world has a weekend on 
Saturday and Sunday 
#speaksmartling 
Not all weeks start on Sunday 
Not all countries use the Gregorian calendar
Plan for Different Time Zones 
#speaksmartling 
Rule #6
Plan for Different Time Zones 
Global Software Development Rule #6 
There are hundreds of different time zones 
And they’ve changed a lot through history 
Even in recent history! 
Some zones have partial-hour offsets 
Newfoundland, Nepal 
#speaksmartling
Plan for Different Time Zones 
Global Software Development Rule #6 
Always, always store times in UTC 
And convert to the user’s local time zone when they 
need to be rendered 
#speaksmartling 
Don’t reinvent the wheel 
Use things like Joda (now included in Java 8 as 
java.time), Noda, NSDate, and Moment.js to make 
time, date, and time zone handling easy
Use Established Data Standards 
#speaksmartling 
Rule #7
Use Established Data Standards 
Global Software Development Rule #7 
#speaksmartling 
Stand on the shoulders of giants 
Always use established, globally-focused standards 
when parsing and storing data
Use Established Data Standards 
Global Software Development Rule #7 
#speaksmartling 
International phone numbers? 
Use E.164 
Example: +16175551234 
Timestamps? 
Use ISO-8601 
Example: 2014-11-05T13:15:30Z
Use Established Data Standards 
Global Software Development Rule #7 
#speaksmartling 
Language codes? 
Use ISO-639 
Example: “zh” for Chinese 
Country codes? 
Use ISO-3166 
Example: “GB” for the United Kingdom 
Time zones? 
Use the Olson database 
Example: “America/New York” for Eastern Time
Avoid ASCII, Use Unicode 
#speaksmartling 
Rule #8
#speaksmartling 
Avoid ASCII, Use Unicode 
Global Software Development Rule #8 
The days of the ASCII bit-flip trick are gone 
“a” = 01100001 
“A” = 01000001 
Unicode is here to stay 
And has been around for years already
#speaksmartling 
Avoid ASCII, Use Unicode 
Global Software Development Rule #8 
To use Unicode properly, you must use it 
consistently throughout your application 
Always use Unicode-capable types and libraries 
Never assume that characters are encoded in ASCII 
Need to choose an encoding? Use UTF-8
Avoid ASCII, Use Unicode 
Global Software Development Rule #8 
Strings in databases should be given extra scrutiny 
Never assume that one character equals one byte – 
especially important for column sizing 
Use Unicode-compatible DB types for user-visible 
strings 
utf8mb4 for MySQL, nvarchar for SQL Server 
#speaksmartling
Rule #9 
Assume Text May Flow from Right to Left 
#speaksmartling
Assume Text May Flow from Right to Left 
Global Software Development Rule #9 
Arabic, Hebrew, Persian, Urdu (and more) all flow 
from right to left 
But what if left-to-right content is quoted within? 
And what about embedded numerals? 
#speaksmartling
Assume Text May Flow from Right to Left 
#globalsoftware 
Global Software Development Rule #9 
When building a web application, regularly test how 
it displays when you apply this CSS3 property 
globally: direction: rtl; 
Use R2 (or similar) to flip css: 
https://github.com/ded/R2
Rule #10 
Test from Day One 
for Multilingual Support 
#speaksmartling
Test from Day One for Multilingual Support 
#speaksmartling 
Global Software Development Rule #10 
“Pseudo-internationalization” is one of the most 
valuable future-proofing tests you can add to your 
automated suite 
If you ever plan to bring your application to global 
markets, testing with pseudo-i18n will identify 
architectural issues early
Test from Day One for Multilingual Support 
#speaksmartling 
Global Software Development Rule #10 
Instead of using test data like “John Doe”, use “John- 
假会河Doe-沖鈈批” instead 
Doing so will verify that all APIs, libraries, databases, 
and code within your application can parse and store 
Unicode 
You don’t have to localize your application to test it 
for basic i18n effectiveness, and your team doesn’t 
have to be bilingual
Test from Day One for Multilingual Support 
Global Software Development Rule #10 
Web 
Browser 
Web 
Server 
App 
Server DB 
“John-假会河 
Doe-沖鈈批” 
“John-假会河 
Doe-沖鈈批” 
“John-假会河 
Doe-沖鈈批” 
“John-?????? 
Doe-??????” 
“John-?????? 
Doe-??????” 
“John-假会河 
Doe-沖鈈批” 
Example of Pseudo-i18n 
#speaksmartling
Questions, anyone? 
We’ll be glad to answer. 
#speaksmartling
Want a copy of our slides? 
hi@smartling.com 
#speaksmartling
Want to learn more about the software 
we’ve built for the world? 
smartling.com 
timetrade.com 
#speaksmartling
Thanks. 
#speaksmartling

More Related Content

Similar to 10 Commandments Building Global Software

What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...BlockchainX
 
Best Practices for Software Localization
Best Practices for Software LocalizationBest Practices for Software Localization
Best Practices for Software LocalizationLionbridge
 
11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next ProjectSofiaCarter4
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.jsSolution Analysts
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.jsSolution Analysts
 
The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 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
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212Mahmoud Samir Fayed
 
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfTop Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfJamesEddie2
 
Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Manoj Ellappan
 
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
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressmtoppa
 
Top 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docxTop 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docxAdvance Tech
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
 
Which Programming Languages To Choose For Android App Development_.pdf
Which Programming Languages To Choose For Android App Development_.pdfWhich Programming Languages To Choose For Android App Development_.pdf
Which Programming Languages To Choose For Android App Development_.pdfOZONESOFT Solutions
 
Different programming languages
Different programming languagesDifferent programming languages
Different programming languagesKunal Negi
 
What makes swift the best for i os enterprise app development
What makes swift the best for i os enterprise app development  What makes swift the best for i os enterprise app development
What makes swift the best for i os enterprise app development Moon Technolabs Pvt. Ltd.
 

Similar to 10 Commandments Building Global Software (20)

What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...
 
Best Practices for Software Localization
Best Practices for Software LocalizationBest Practices for Software Localization
Best Practices for Software Localization
 
11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project11 Reasons Why C# is the Right Choice for Your Next Project
11 Reasons Why C# is the Right Choice for Your Next Project
 
IT Technologies Career perspective
IT Technologies   Career perspectiveIT Technologies   Career perspective
IT Technologies Career perspective
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.js
 
8 tips for mastering node.js
8 tips for mastering node.js8 tips for mastering node.js
8 tips for mastering node.js
 
The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210The Ring programming language version 1.9 book - Part 97 of 210
The Ring programming language version 1.9 book - Part 97 of 210
 
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"
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212The Ring programming language version 1.10 book - Part 99 of 212
The Ring programming language version 1.10 book - Part 99 of 212
 
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdfTop Object-Oriented Programming Languages To Follow In December 2022.pdf
Top Object-Oriented Programming Languages To Follow In December 2022.pdf
 
Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1Basic iOS Training with SWIFT - Part 1
Basic iOS Training with SWIFT - Part 1
 
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
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
Top 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docxTop 10 Programming Languages 2023.docx
Top 10 Programming Languages 2023.docx
 
The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212The Ring programming language version 1.10 book - Part 6 of 212
The Ring programming language version 1.10 book - Part 6 of 212
 
Which Programming Languages To Choose For Android App Development_.pdf
Which Programming Languages To Choose For Android App Development_.pdfWhich Programming Languages To Choose For Android App Development_.pdf
Which Programming Languages To Choose For Android App Development_.pdf
 
Intro to web development
Intro to web developmentIntro to web development
Intro to web development
 
Different programming languages
Different programming languagesDifferent programming languages
Different programming languages
 
What makes swift the best for i os enterprise app development
What makes swift the best for i os enterprise app development  What makes swift the best for i os enterprise app development
What makes swift the best for i os enterprise app development
 

Recently uploaded

Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...Call Girls in Nagpur High Profile
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineeringmalavadedarshan25
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...RajaP95
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 

Recently uploaded (20)

Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
 
Internship report on mechanical engineering
Internship report on mechanical engineeringInternship report on mechanical engineering
Internship report on mechanical engineering
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 

10 Commandments Building Global Software

  • 1. The 10 Commandments of Building Global Software #speaksmartling Andrey Akselrod CTO and Co-Founder Smartling Brian Kelly VP, Engineering TimeTrade
  • 2. Andrey @chelya Brian @brikelly #speaksmartling Presenters A quick word
  • 3. The Global Challenge & …but make it easy to take it to a global market later? #speaksmartling Is it possible to write software for a single region first…
  • 4. Global-Ready Software Conventional wisdom Internationalization is hard. Reality It isn’t really that difficult, if you consider some important things during design and development. & #speaksmartling
  • 5. Carefully Manage User-Visible Strings #speaksmartling Rule #1
  • 6. Carefully Manage User-Visible Strings Global Software Development Rule #1 Maintain user-visible strings separate from application code This makes it easier to send strings to translators and incorporate their work String values must be changeable without breaking application behavior #speaksmartling
  • 7. Carefully Manage User-Visible Strings Global Software Development Rule #1 Favor existing platform tools rather than inventing your own #speaksmartling For example: ResourceBundles for Java .resx resources for .NET gettext for C NSLocalizedString for Objective-C
  • 8. Carefully Manage User-Visible Strings Global Software Development Rule #1 Concatenation is a recipe for i18n pain Bad: user + “has logged on” Good: “{0} has logged on”
  • 9. Carefully Manage User-Visible Strings Global Software Development Rule #1 Include punctuation in your localizable strings Helps prevent breakages on other locales Even more valuable if text flows right-to-left “Don’t forget your spaces!” in French is ”N’oubliez pas vos espaces !” UI sorting order should be based on translated strings Example: “Korea” in Spanish is “Corea”
  • 10. Rule #2 Expect User-Visible Strings #speaksmartling to Grow/Shrink
  • 11. Expect User-Visible Strings to Grow/Shrink Global Software Development Rule #2 English phrases may double in size when translated into other languages “Read more” is “Weitere informationen” in German They may also drastically shrink when translated into other languages “To fall in love at first sight” is “一见钟情” in Chinese UIs will have to adapt accordingly to accommodate different string lengths
  • 12. Remember the Importance of Context #speaksmartling Rule #3
  • 13. Remember the Importance of Context Global Software Development Rule #3 #speaksmartling Context is everything for the translator The source string might not be enough Make as much information as possible available to them: UI screenshots, documentation, personas, etc. Or best of all, access to the product itself
  • 15. Keep Images Free of Embedded Text #speaksmartling Rule #4
  • 16. Keep Images Free of Embedded Text Global Software Development Rule #4 For anything except a company or product logo, avoid creating graphics that have text embedded directly #speaksmartling Instead of a low-cost string translation, you’ll incur graphic design costs if you embed text in graphics
  • 17. Consider Calendar Differences #speaksmartling Rule #5
  • 18. Consider Calendar Differences Global Software Development Rule #5 Time formats differ from country to country 2:30p.m. 14:30 2:30PM Date formats vary tremendously dd/mm/yyyy mm-dd-yyyy YYYYMMDD Don’t rely on abbreviations to denote days, such as M T W T F S S “M” works for German (“Montag”), but not for Spanish (“lunes”) or Japanese (“月曜日”) #speaksmartling
  • 19. Consider Calendar Differences Global Software Development Rule #5 Not everyone in the world has a weekend on Saturday and Sunday #speaksmartling Not all weeks start on Sunday Not all countries use the Gregorian calendar
  • 20. Plan for Different Time Zones #speaksmartling Rule #6
  • 21. Plan for Different Time Zones Global Software Development Rule #6 There are hundreds of different time zones And they’ve changed a lot through history Even in recent history! Some zones have partial-hour offsets Newfoundland, Nepal #speaksmartling
  • 22. Plan for Different Time Zones Global Software Development Rule #6 Always, always store times in UTC And convert to the user’s local time zone when they need to be rendered #speaksmartling Don’t reinvent the wheel Use things like Joda (now included in Java 8 as java.time), Noda, NSDate, and Moment.js to make time, date, and time zone handling easy
  • 23. Use Established Data Standards #speaksmartling Rule #7
  • 24. Use Established Data Standards Global Software Development Rule #7 #speaksmartling Stand on the shoulders of giants Always use established, globally-focused standards when parsing and storing data
  • 25. Use Established Data Standards Global Software Development Rule #7 #speaksmartling International phone numbers? Use E.164 Example: +16175551234 Timestamps? Use ISO-8601 Example: 2014-11-05T13:15:30Z
  • 26. Use Established Data Standards Global Software Development Rule #7 #speaksmartling Language codes? Use ISO-639 Example: “zh” for Chinese Country codes? Use ISO-3166 Example: “GB” for the United Kingdom Time zones? Use the Olson database Example: “America/New York” for Eastern Time
  • 27. Avoid ASCII, Use Unicode #speaksmartling Rule #8
  • 28. #speaksmartling Avoid ASCII, Use Unicode Global Software Development Rule #8 The days of the ASCII bit-flip trick are gone “a” = 01100001 “A” = 01000001 Unicode is here to stay And has been around for years already
  • 29. #speaksmartling Avoid ASCII, Use Unicode Global Software Development Rule #8 To use Unicode properly, you must use it consistently throughout your application Always use Unicode-capable types and libraries Never assume that characters are encoded in ASCII Need to choose an encoding? Use UTF-8
  • 30. Avoid ASCII, Use Unicode Global Software Development Rule #8 Strings in databases should be given extra scrutiny Never assume that one character equals one byte – especially important for column sizing Use Unicode-compatible DB types for user-visible strings utf8mb4 for MySQL, nvarchar for SQL Server #speaksmartling
  • 31. Rule #9 Assume Text May Flow from Right to Left #speaksmartling
  • 32. Assume Text May Flow from Right to Left Global Software Development Rule #9 Arabic, Hebrew, Persian, Urdu (and more) all flow from right to left But what if left-to-right content is quoted within? And what about embedded numerals? #speaksmartling
  • 33. Assume Text May Flow from Right to Left #globalsoftware Global Software Development Rule #9 When building a web application, regularly test how it displays when you apply this CSS3 property globally: direction: rtl; Use R2 (or similar) to flip css: https://github.com/ded/R2
  • 34. Rule #10 Test from Day One for Multilingual Support #speaksmartling
  • 35. Test from Day One for Multilingual Support #speaksmartling Global Software Development Rule #10 “Pseudo-internationalization” is one of the most valuable future-proofing tests you can add to your automated suite If you ever plan to bring your application to global markets, testing with pseudo-i18n will identify architectural issues early
  • 36. Test from Day One for Multilingual Support #speaksmartling Global Software Development Rule #10 Instead of using test data like “John Doe”, use “John- 假会河Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  • 37. Test from Day One for Multilingual Support Global Software Development Rule #10 Web Browser Web Server App Server DB “John-假会河 Doe-沖鈈批” “John-假会河 Doe-沖鈈批” “John-假会河 Doe-沖鈈批” “John-?????? Doe-??????” “John-?????? Doe-??????” “John-假会河 Doe-沖鈈批” Example of Pseudo-i18n #speaksmartling
  • 38. Questions, anyone? We’ll be glad to answer. #speaksmartling
  • 39. Want a copy of our slides? hi@smartling.com #speaksmartling
  • 40. Want to learn more about the software we’ve built for the world? smartling.com timetrade.com #speaksmartling

Editor's Notes

  1. For example: ResourceBundles for Java .resx resources for .NET gettext for C NSLocalizedString for Objective-C
  2. Concatenation is a recipe for i18n pain Bad: user + “ has logged on” Good: “{0} has logged on”
  3. English phrases may double in size when translated to other languages “Red more” is “Weitere Informationen” in German They may drastically shrink when translated into other languages “To fall in love at first sight” is “一见钟情” in Chinese UIs will have to adapt accordingly to accommodate different string lengths
  4. There are hundreds of different time zones And they’ve changed a lot through history Even in recent history! Some zones have partial-hour offsets Newfoundland, Nepal
  5. Always, always store times in UTC And convert to the user’s local time zone when they need to be rendered Don’t reinvent the wheel Use things like Joda (now included in Java 8 as java.time), Noda, NSDate, and Moment.js to make time, date, and time zone handling easy
  6. Always use established, globally-focused standards when parsing and storing data
  7. International phone numbers? Use E.164 Example: +16175551234 Timestamps? Use ISO-8601 Example: 2014-11-05T13:15:30Z
  8. Language codes? Use ISO-639 Example: “zh” for Chinese Country codes? Use ISO-3166 Example: “GB” for the United Kingdom Time zones? Use the Olson database Example: “America/New_York” for Eastern Time
  9. The days of the ASCII bit-flip trick are long gone… “a” = 01100001 “A” = 01000001 Unicode is here to stay – and has been around for years already
  10. To use Unicode properly, you must use it consistently throughout your application Always use Unicode-capable types and libraries Never assume that characters are encoded in ASCII Need to choose an encoding? Use UTF-8
  11. Strings in databases should be given extra scrutiny Never assume that that one character equals one byte - especially important for column sizing Use Unicode-compatible DB types for user-visible strings utf8mb4 for MySQL, nvarchar for SQL Server
  12. Arabic, Hebrew, Persian, and Urdu (and more) all flow from right-to-left But what if left-to-right content is quoted within? And what about embedded numerals?
  13. When building a web application, regularly test how it displays when you apply this CSS3 property globally: direction: rtl; Use R2 (or similar) to flip css: https://github.com/ded/R2
  14. “Pseudo-internationalization” is one of the most valuable future-proofing tests you could add to your automated suite If you ever plan to bring your application to global markets, testing with pseudo-i18n will identify architectural issues early
  15. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  16. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  17. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  18. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  19. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual
  20. Instead of using test data like “John Doe”, use “John-假会河 Doe-沖鈈批” instead Doing so will verify that all APIs, libraries, databases, and code within your application can parse and store Unicode You don’t have to localize your application to test it for basic i18n effectiveness, and your team doesn’t have to be bilingual