Localization Realization
Upcoming SlideShare
Loading in...5
×
 

Localization Realization

on

  • 288 views

Most of us know the drill - write the app, crank out the code and localize later. Thinking about localizing your iOS app up front will save you tons of time later. I'll also talk about a great ...

Most of us know the drill - write the app, crank out the code and localize later. Thinking about localizing your iOS app up front will save you tons of time later. I'll also talk about a great project that can help you put translation into the hands of your users.

Statistics

Views

Total Views
288
Views on SlideShare
287
Embed Views
1

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 1

http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Localization Realization Localization Realization Presentation Transcript

  • 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?