SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Ähnlich wie 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 TextSignWriting For Sign Languages
 
Neo4j Training Introduction
Neo4j Training IntroductionNeo4j Training Introduction
Neo4j Training IntroductionMax De Marzi
 
GraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphGraphConnect 2014 SF: The Business Graph
GraphConnect 2014 SF: The Business GraphNeo4j
 
"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, 2011Blend Interactive
 
How To Train Your Microservice
How To Train Your MicroserviceHow To Train Your Microservice
How To Train Your MicroserviceVMware 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.pptxScott Williamson
 
Data Modeling for NoSQL
Data Modeling for NoSQLData Modeling for NoSQL
Data Modeling for NoSQLTony Tam
 
Graphs fun vjug2
Graphs fun vjug2Graphs fun vjug2
Graphs fun vjug2Neo4j
 
SignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentationSignPuddle Standard for SignWriting Text presentation
SignPuddle Standard for SignWriting Text presentationStephen Slevinski
 
Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011Open Data Business Models - OSCON 2011
Open Data Business Models - OSCON 2011lukec
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExBradley 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: SegmentAmazon 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 365Martin Laplante
 
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 2Rick Deller
 
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 2Rick Deller
 
JSON as a SQL Datatype
JSON as a SQL DatatypeJSON as a SQL Datatype
JSON as a SQL DatatypeRobert 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 OPSepiineg1
 

Ähnlich wie 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
 
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
 
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
 
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
 

Kürzlich hochgeladen

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Kürzlich hochgeladen (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Localization Realization