SlideShare a Scribd company logo
Localization
Realization
Aaron Douglas
@astralbodies
Who am I?
• Aaron Douglas
• Red Arrow Labs in Milwaukee
• Mobile (iOS & Android) & Enterprise
Java Developer
Internationalization vs
Localization
• i18n vs L10n
• i18n = adapting to work everywhere
• L10n = additional features for a
specific locale
What Is the Point?
• Language
• Culture
• Conventions
• Legal
Sounds hard.
• It can be difficult
• It’s not as easy as

translate.google.com

• It can pay off big
Why Localize?
• Opens up markets for your product(s)
• Apple gives “free” insertion into
localized App Stores

• Greater income
• Your power users = your translators
When do I start?

• From day one
• Existing application
What do I localize?
• Strings
• Numbers
• Dates
• Images
• Layouts
NSLocale
NSLocale
• Encapsulates a lot of information
• Language
• Cultural conventions
• Dates
• Numbers
Different Locales

• System Locale
• Current Locale
• NSCurrentLocaleDidChangeNotification
Strings
Strings
• NSLocalizedString
• XIB/NIB/Storyboards
• Localizable.strings
• lproj folders
• UTF-16 files
Keys, Values and
Comments
cell.textLabel.text =
NSLocalizedString(@"All-day",
@"All-day switch label");
/* All-day switch label */
"All-day" = "All-day";
genstrings & ibtool
find . -name *.m | xargs genstrings -o en.lproj/
ibtool --generate-strings-file MainMenu.strings
MainMenu.xib
ibtool --strings-file MainMenu.strings -write ../French.lproj/MainMenu.xib
MainMenu.xib
Looks can be deceiving
• Keys are unique to each strings file
• Don’t overload!
• UTF-16 plays hell with email
• Use the comments properly
• Positional parameters
Comparing & Sorting
• A a B b C c D d = English
• a, A, b, B, c, C, ä, Ä = Swedish
• Called collation
• -compare: is wrong
• Use -localizedStandardCompare:
Validation
• Your validation logic may be localedependent

• Postal codes
• Regular Expressions
Debugging
NSDictionary *defaults = @{
@"NSShowNonLocalizableStrings": @(YES),
@"NSShowNonLocalizedStrings": @(YES)};
!

[[NSUserDefaults standardUserDefaults]
registerDefaults:defaults];
!

[[NSUserDefaults standardUserDefaults]
synchronize];
Numbers
NSNumberFormatter

• +localizedStringFromNumber:number
Style:

• Styles: General, Currency, Percentage,
Scientific, Spell-Out
Examples
• @45678.90
• General: 45,678.90
• Currency: $45,678.90
• Percentage: 4,567,890%
• Scientific: 4.56789E+04
• Spell-Out: Forty five thousand six ...
Locale Specific Formats

• 45 678,90
• ¥456.78
Number Tips

• Avoid intValue
• Use NSNumberFormatter
• Unit conversion is important
Dates
Dates

• One of the most messed up concepts
• NSDate is a wrapped NSTimeInterval
• Simply a point in time
Why Are Dates Hard?
• Time Zones
• Leap Years
• Leap Seconds
• Date Math
• Calendar Conversion
Calendars
• Gregorian
• Islamic
• Hindu
• Hebrew
• and on and on
Don’t Assume
• Date formats / Input masks
• Length of days/weeks/months
• Gregorian
• Location hasn’t changed since launch
(timezones!)
Do Assume

• API calls with date formats
• Internally stored dates
• NSDate has no timezone
Images
Images

• Use Core Graphics to draw text
• No text on launch images
• Keep cultural references in mind
Cultural Images
Layouts
Layouts
• Words can be different lengths in
another language

• Mac OS X has autolayouts
• iOS may “some day” have autolayout
• [UIBarButtonItem possibleTitles]
ibtool
• Separate NIBs for each locale
• Don’t make layout changes in localespecific NIB!

• Programmatically move items
• Wait until iOS 6...
Translation
Process
• Collect Strings files/resources
• Send to translators
• Incorporate new strings
• Test, test, test, test!
translate.google.com
Greenwich
Greenwich
• Mac & iOS Apps!
• iOS requires a Mac & Bonjour
• http://github.com/fadingred/
Greenwich
Services

• gengo - http://gengo.com
• Applingua - http://applingua.com
• Amazon Mechanical Turk
Resources
Apple Developer Library

• Internationalization Programming
Topics

• International Mountains (Sample
Code)
WWDC Videos

• 2011 - 131 - Getting Your Apps Ready

for China and Other Hot Markets

• 2012 - 244 - Internationalization Tips
and Tricks
Demo
Questions?

More Related Content

Similar to Localization Realization

SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting TextSIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
SignWriting For Sign Languages
 
Neo4j Training Introduction
Neo4j Training IntroductionNeo4j Training Introduction
Neo4j Training Introduction
Max De Marzi
 
GraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphGraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business Graph
Neo4j
 
"Introduction to F#" - South Dakota Code Camp, November 5, 2011
"Introduction to F#" - South Dakota Code Camp, November 5, 2011"Introduction to F#" - South Dakota Code Camp, November 5, 2011
"Introduction to F#" - South Dakota Code Camp, November 5, 2011
Blend Interactive
 
How To Train Your Microservice
How To Train Your MicroserviceHow To Train Your Microservice
How To Train Your Microservice
VMware Tanzu
 
Wish There Was An App For That.pptx
Wish There Was An App For That.pptxWish There Was An App For That.pptx
Wish There Was An App For That.pptx
Scott Williamson
 
Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQL
Tony Tam
 
Graphs fun vjug2
Graphs fun vjug2Graphs fun vjug2
Graphs fun vjug2
Neo4j
 
Johns smith-3
Johns smith-3Johns smith-3
SignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentationSignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentation
Stephen Slevinski
 
Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011
lukec
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
Bradley Brown
 
C*ollege Credit: Is My App a Good Fit for Cassandra?
C*ollege Credit: Is My App a Good Fit for Cassandra?C*ollege Credit: Is My App a Good Fit for Cassandra?
C*ollege Credit: Is My App a Good Fit for Cassandra?
DataStax
 
Hiring at an Early Stage Startup: Segment
Hiring at an Early Stage Startup: SegmentHiring at an Early Stage Startup: Segment
Hiring at an Early Stage Startup: Segment
Amazon Web Services
 
Your Tower of Babel Reaches the Cloud: Languages and Office 365
Your Tower of Babel Reaches the Cloud: Languages and Office 365Your Tower of Babel Reaches the Cloud: Languages and Office 365
Your Tower of Babel Reaches the Cloud: Languages and Office 365
Martin Laplante
 
2 - Recruitment in Perl The State of the Perl Market - YAPC Final 2
2 - Recruitment in Perl  The State of the Perl Market - YAPC Final 22 - Recruitment in Perl  The State of the Perl Market - YAPC Final 2
2 - Recruitment in Perl The State of the Perl Market - YAPC Final 2
Rick Deller
 
Recruitment in Perl - The State of the Perl Market 2
Recruitment in Perl - The State of the Perl Market 2Recruitment in Perl - The State of the Perl Market 2
Recruitment in Perl - The State of the Perl Market 2
Rick Deller
 
Why erlang
Why erlangWhy erlang
Why erlang
Doug Goldie
 
JSON as a SQL Datatype
JSON as a SQL DatatypeJSON as a SQL Datatype
JSON as a SQL Datatype
Robert Sell
 
I set off on a journey to the house of OPS
I set off on a journey to the house of OPSI set off on a journey to the house of OPS
I set off on a journey to the house of OPS
epiineg1
 

Similar to Localization Realization (20)

SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting TextSIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
SIGNWRITING SYMPOSIUM PRESENTATION 11: SignPuddle Standard For SignWriting Text
 
Neo4j Training Introduction
Neo4j Training IntroductionNeo4j Training Introduction
Neo4j Training Introduction
 
GraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphGraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business Graph
 
"Introduction to F#" - South Dakota Code Camp, November 5, 2011
"Introduction to F#" - South Dakota Code Camp, November 5, 2011"Introduction to F#" - South Dakota Code Camp, November 5, 2011
"Introduction to F#" - South Dakota Code Camp, November 5, 2011
 
How To Train Your Microservice
How To Train Your MicroserviceHow To Train Your Microservice
How To Train Your Microservice
 
Wish There Was An App For That.pptx
Wish There Was An App For That.pptxWish There Was An App For That.pptx
Wish There Was An App For That.pptx
 
Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQL
 
Graphs fun vjug2
Graphs fun vjug2Graphs fun vjug2
Graphs fun vjug2
 
Johns smith-3
Johns smith-3Johns smith-3
Johns smith-3
 
SignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentationSignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentation
 
Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
 
C*ollege Credit: Is My App a Good Fit for Cassandra?
C*ollege Credit: Is My App a Good Fit for Cassandra?C*ollege Credit: Is My App a Good Fit for Cassandra?
C*ollege Credit: Is My App a Good Fit for Cassandra?
 
Hiring at an Early Stage Startup: Segment
Hiring at an Early Stage Startup: SegmentHiring at an Early Stage Startup: Segment
Hiring at an Early Stage Startup: Segment
 
Your Tower of Babel Reaches the Cloud: Languages and Office 365
Your Tower of Babel Reaches the Cloud: Languages and Office 365Your Tower of Babel Reaches the Cloud: Languages and Office 365
Your Tower of Babel Reaches the Cloud: Languages and Office 365
 
2 - Recruitment in Perl The State of the Perl Market - YAPC Final 2
2 - Recruitment in Perl  The State of the Perl Market - YAPC Final 22 - Recruitment in Perl  The State of the Perl Market - YAPC Final 2
2 - Recruitment in Perl The State of the Perl Market - YAPC Final 2
 
Recruitment in Perl - The State of the Perl Market 2
Recruitment in Perl - The State of the Perl Market 2Recruitment in Perl - The State of the Perl Market 2
Recruitment in Perl - The State of the Perl Market 2
 
Why erlang
Why erlangWhy erlang
Why erlang
 
JSON as a SQL Datatype
JSON as a SQL DatatypeJSON as a SQL Datatype
JSON as a SQL Datatype
 
I set off on a journey to the house of OPS
I set off on a journey to the house of OPSI set off on a journey to the house of OPS
I set off on a journey to the house of OPS
 

Recently uploaded

Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
marufrahmanstratejm
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 

Recently uploaded (20)

Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 

Localization Realization