SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Internationalizing
    your apps
Chuck Smith and Judith Meyer


      360|iDev Denver
      Sep 27-30, 2009
2
Why Go International? Why Translate?
•   the “world economy crisis” is not as much of a crisis
    outside the US

•   the dollar is weak; your apps are cheaper abroad

•   chance to hit a nerve abroad (different tastes)

    => make a lot more money from the same
    programming effort

•   11 out of 12 people worldwide can’t speak English

•   the rest feel more appreciated & more comfortable
    buying if a description is in their language
Who should translate?
•   Do not use machine translation. If you use the
    machine translation, you also tell you the foreign
    customer, they are not worth any you, your company
    is not also professional.
•   Your college friend who studied some Spanish will still
    be out of his league translating something INTO
    Spanish. Translation agencies only let people
    translate into their native language.
•   Not every native speaker and not even every certified
    translator can translate a good sales pitch for the App
    Store. Also, not everyone is a tech whizz.
•   www.iphone-i18n.com knows good translators
Translation Pitfalls
•   Don't assume English word order. To enable
    translators to change the order as needed, use
    variables %d, %s and so on and do like this:

    int levels = 99;
    [NSString stringWithFormat: NSLocalizedString
    ( @"You can choose between %d exciting levels.",
    @"Level count" ), levels];
    ==>
    • French: You can choose between %d levels exciting.
    • German: You can between %d exciting levels choose.
    • Japanese: You %d exciting levels from choose can.
Translation Pitfalls
•   If you need both singular and plural form, do not
    concatenate „s“ to the end of the word for the plural.
    • English: 1 fish – 2 fish; 1 wife – 2 wives; etc.
    • German: 1 Bier – 2 Biere; 1 Arbeit – 2 Arbeiten
    • French: 1 vin – 2 vins; 1 eau – 2 eaux
    • Chinese doesn't have a plural, but does have counters
      1 ge ren – 2 ge ren; 1 ben shu – 2 ben shu
    • Swahili: 1 mtu – 2 watu; 1 jicho – 2 macho
•   Ditto for verbs
•   Also a complication, less likely to come up in iPhone
    programming: cases
    • Vi atakas elefanton. - You attack an elephant.
      Elefanto atakas vin. - An elephant attacks you.
Localization: Know your Audience
Localization: Respect Foreign Languages


•   Traficante mineral water

•   Silver Mist

•   Mitsubishi Pajero

•   „Bite the wax tadpole“ or
    „Happiness in your mouth“?
Translation vs. Localization

•   Brand / product name

•   Form of address

•   Measurements

•   Date formats

•   Pictures and icons

•   Wording
Localization: Local Asian Feel
Implications of RTL Languages
       (Arabic, Hebrew)
Retrieving the Current Locale



NSLocale *locale = [NSLocale currentLocale];

NSString *currentLocale = [locale
     displayNameForKey:NSLocaleIdentifier
                 value:[locale localeIdentifier]];

NSLog( @"Complete locale: %@", currentLocale );
App Interface



•   Press ⌘I to show Info window on xib file

•   General tab: Make File Localizable

•   Press ⌘I again on file... Add Localization

•   Add languages by 2-letter code

•   Right-click xib file and now edit other langs
Images




•   See what images have text on them

•   Follow same procedure as for interfaces

•   Highlight file and choose Reveal in Finder

•   Replace other images with localized images
Getting strings

Displaying strings in app
NSLocalizedString( @"Music",
                   @"The menu item Music." );
NSLocalizedString( @"Films",
                   @"The button Films." );


Displaying variables within string in app
int titles = 142;[NSString stringWithFormat:
NSLocalizedString( @"There are %d movie titles.",
                   @"Movie statistics" ), titles];
Strings file



•   Autogenerate Localizable.strings file

•   Go to root directory of app

•   Terminal: genstrings ./Classes/*.m

•   Make localizable like for interfaces

•   Translate file
Localizable.strings

Autogenerated file
/* The button Films. */
"Films" = "Films";/* The menu item Music. */
"Music" = "Music";


Translated file
/* The button Films. */
"Films" = "Filme";/* The menu item Music. */
"Music" = "Musik";
App Store



•   iTunes Connect: Manage Your Application > Edit
    Information > Localization

•   Don’t forget planned promo text like: “SPECIAL
    OFFER: 50% OFF IN JULY!”

•   Official languages: Dutch, English, French, German,
    Italian, Japanese, Spanish

•   Other languages will need separate binary
iPhone-i18n.com


•   Exclusively translating iPhone apps

•   We understand your linguistic and technical needs

•   Translators understand technicalities and are skilled
    at writing promotional texts

•   App with little text + App Store: only 60€ (US $85)

•   Translation package (many languages) = lower price
Thank you


ερωτήσεις?          Frågor?
                                       Preguntas?
         Pytania?
                                     Вопросы?
                  Questions?
Demandoj?
                      ?' ( ) * +      Demandes?
        Vragen?
    ?        Domande?              Fragen?

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (9)

Gi 04 multimedia elements
Gi 04 multimedia elementsGi 04 multimedia elements
Gi 04 multimedia elements
 
Google Developer Day 2010 Japan: 音声入力 API for Android (アレックス グランスタイン, 小西 祐介)
Google Developer Day 2010 Japan: 音声入力 API for Android (アレックス グランスタイン, 小西 祐介)Google Developer Day 2010 Japan: 音声入力 API for Android (アレックス グランスタイン, 小西 祐介)
Google Developer Day 2010 Japan: 音声入力 API for Android (アレックス グランスタイン, 小西 祐介)
 
Change Your Voice in Firefox Hello
Change Your Voice in Firefox HelloChange Your Voice in Firefox Hello
Change Your Voice in Firefox Hello
 
Favorite technologies
Favorite technologiesFavorite technologies
Favorite technologies
 
Change Your Voice in Slack.com
Change Your Voice in Slack.comChange Your Voice in Slack.com
Change Your Voice in Slack.com
 
My Keyboard Situation
My Keyboard SituationMy Keyboard Situation
My Keyboard Situation
 
Curse Voice with Voice Changer for Funny Curse Gaming
Curse Voice with Voice Changer for Funny Curse GamingCurse Voice with Voice Changer for Funny Curse Gaming
Curse Voice with Voice Changer for Funny Curse Gaming
 
Have Fun in Conferendo with Voice Changer
Have Fun in Conferendo with Voice ChangerHave Fun in Conferendo with Voice Changer
Have Fun in Conferendo with Voice Changer
 
Iphone ios7-quick-reference
Iphone ios7-quick-referenceIphone ios7-quick-reference
Iphone ios7-quick-reference
 

Andere mochten auch

Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
Ajujaht
 
ACM Mid-Southeast Slides
ACM Mid-Southeast SlidesACM Mid-Southeast Slides
ACM Mid-Southeast Slides
krinchan
 

Andere mochten auch (7)

Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
Rain Rannu Mobi Fortumo Laienemisest Ajujaht (2)
 
BENASQUE
BENASQUEBENASQUE
BENASQUE
 
ACM Mid-Southeast Slides
ACM Mid-Southeast SlidesACM Mid-Southeast Slides
ACM Mid-Southeast Slides
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
 
Mobile presentation
Mobile presentationMobile presentation
Mobile presentation
 
Introtoduction to cocos2d
Introtoduction to  cocos2dIntrotoduction to  cocos2d
Introtoduction to cocos2d
 
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application ResponsivenessOptimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application Responsiveness
 

Ähnlich wie Internationalizing Your Apps

Multilingual Content in Drupal 7 & 8 at DrupalCon Munich
Multilingual Content in Drupal 7 & 8 at DrupalCon MunichMultilingual Content in Drupal 7 & 8 at DrupalCon Munich
Multilingual Content in Drupal 7 & 8 at DrupalCon Munich
Suzanne Dergacheva
 
Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012
Suzanne Dergacheva
 
Introduction to Internationalization
Introduction to InternationalizationIntroduction to Internationalization
Introduction to Internationalization
Ewa Barczykowska
 
Mightyverse women2 pitch
Mightyverse women2 pitchMightyverse women2 pitch
Mightyverse women2 pitch
mightyverse
 

Ähnlich wie Internationalizing Your Apps (20)

Laura Dent: Single-Source and Localization
Laura Dent: Single-Source and LocalizationLaura Dent: Single-Source and Localization
Laura Dent: Single-Source and Localization
 
MVP Virtual Conference - Americas 2015 - Cross platform localization for mobi...
MVP Virtual Conference - Americas 2015 - Cross platform localization for mobi...MVP Virtual Conference - Americas 2015 - Cross platform localization for mobi...
MVP Virtual Conference - Americas 2015 - Cross platform localization for mobi...
 
International Search & Social Marketing and Emerging Markets: What Merchants ...
International Search & Social Marketing and Emerging Markets: What Merchants ...International Search & Social Marketing and Emerging Markets: What Merchants ...
International Search & Social Marketing and Emerging Markets: What Merchants ...
 
Single-Sourcing and Localization
Single-Sourcing and LocalizationSingle-Sourcing and Localization
Single-Sourcing and Localization
 
Multilingual Content in Drupal 7 & 8 at DrupalCon Munich
Multilingual Content in Drupal 7 & 8 at DrupalCon MunichMultilingual Content in Drupal 7 & 8 at DrupalCon Munich
Multilingual Content in Drupal 7 & 8 at DrupalCon Munich
 
Creating a World-class Translation Strategy
Creating a World-class Translation StrategyCreating a World-class Translation Strategy
Creating a World-class Translation Strategy
 
LocJam 2014 Barcelona Workshop - Carme Mangiron
LocJam 2014 Barcelona Workshop - Carme MangironLocJam 2014 Barcelona Workshop - Carme Mangiron
LocJam 2014 Barcelona Workshop - Carme Mangiron
 
Seven Steps to better Translations - A Beechwood Guide to Translation
Seven Steps to better Translations - A Beechwood Guide to TranslationSeven Steps to better Translations - A Beechwood Guide to Translation
Seven Steps to better Translations - A Beechwood Guide to Translation
 
Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012Multilingual Content: Presentation from DrupalCamp Montreal 2012
Multilingual Content: Presentation from DrupalCamp Montreal 2012
 
How To Build And Launch A Successful Globalized App From Day One Or All The ...
How To Build And Launch A Successful Globalized App From Day One  Or All The ...How To Build And Launch A Successful Globalized App From Day One  Or All The ...
How To Build And Launch A Successful Globalized App From Day One Or All The ...
 
How to create/improve OSS products and its community
How to create/improve OSS products and its communityHow to create/improve OSS products and its community
How to create/improve OSS products and its community
 
How to make multilingual plugins and themes
How to make multilingual plugins and themesHow to make multilingual plugins and themes
How to make multilingual plugins and themes
 
iOs app localization / Yoni tsafir
iOs app localization / Yoni tsafiriOs app localization / Yoni tsafir
iOs app localization / Yoni tsafir
 
QA, Localisation & Experience: The Perfect Combination for the Best Localisat...
QA, Localisation & Experience: The Perfect Combination for the Best Localisat...QA, Localisation & Experience: The Perfect Combination for the Best Localisat...
QA, Localisation & Experience: The Perfect Combination for the Best Localisat...
 
Looah_SuperstarM
Looah_SuperstarMLooah_SuperstarM
Looah_SuperstarM
 
Expand Your App's Global Potential With Internationalization
Expand Your App's Global Potential With InternationalizationExpand Your App's Global Potential With Internationalization
Expand Your App's Global Potential With Internationalization
 
Best Practices for Software Localization
Best Practices for Software LocalizationBest Practices for Software Localization
Best Practices for Software Localization
 
Introduction to Internationalization
Introduction to InternationalizationIntroduction to Internationalization
Introduction to Internationalization
 
Let's pretend
Let's pretendLet's pretend
Let's pretend
 
Mightyverse women2 pitch
Mightyverse women2 pitchMightyverse women2 pitch
Mightyverse women2 pitch
 

Mehr von John Wilker

Mehr von John Wilker (20)

Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11
 
Getting Started with OpenGL ES
Getting Started with OpenGL ESGetting Started with OpenGL ES
Getting Started with OpenGL ES
 
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.
 
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignPhysics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
 
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
 
Getting Started with iPhone Game Development
Getting Started with iPhone Game DevelopmentGetting Started with iPhone Game Development
Getting Started with iPhone Game Development
 
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLimeIntegrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLime
 
Starting Core Animation
Starting Core AnimationStarting Core Animation
Starting Core Animation
 
P2P Multiplayer Gaming
P2P Multiplayer GamingP2P Multiplayer Gaming
P2P Multiplayer Gaming
 
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve ResponsivenessUsing Concurrency To Improve Responsiveness
Using Concurrency To Improve Responsiveness
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder Behind
 
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouchMobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouch
 
Accelerometer and OpenGL
Accelerometer and OpenGLAccelerometer and OpenGL
Accelerometer and OpenGL
 
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and FrameworkDeep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and Framework
 
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegateNSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegate
 
Using SQLite
Using SQLiteUsing SQLite
Using SQLite
 
From Flash to iPhone
From Flash to iPhoneFrom Flash to iPhone
From Flash to iPhone
 
Managing And Optimizing Memory Usage
Managing And Optimizing Memory UsageManaging And Optimizing Memory Usage
Managing And Optimizing Memory Usage
 
Using the Addressbook
Using the AddressbookUsing the Addressbook
Using the Addressbook
 
Web or SDK Development
Web or SDK DevelopmentWeb or SDK Development
Web or SDK Development
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Internationalizing Your Apps

  • 1. Internationalizing your apps Chuck Smith and Judith Meyer 360|iDev Denver Sep 27-30, 2009
  • 2. 2
  • 3. Why Go International? Why Translate? • the “world economy crisis” is not as much of a crisis outside the US • the dollar is weak; your apps are cheaper abroad • chance to hit a nerve abroad (different tastes) => make a lot more money from the same programming effort • 11 out of 12 people worldwide can’t speak English • the rest feel more appreciated & more comfortable buying if a description is in their language
  • 4. Who should translate? • Do not use machine translation. If you use the machine translation, you also tell you the foreign customer, they are not worth any you, your company is not also professional. • Your college friend who studied some Spanish will still be out of his league translating something INTO Spanish. Translation agencies only let people translate into their native language. • Not every native speaker and not even every certified translator can translate a good sales pitch for the App Store. Also, not everyone is a tech whizz. • www.iphone-i18n.com knows good translators
  • 5. Translation Pitfalls • Don't assume English word order. To enable translators to change the order as needed, use variables %d, %s and so on and do like this: int levels = 99; [NSString stringWithFormat: NSLocalizedString ( @"You can choose between %d exciting levels.", @"Level count" ), levels]; ==> • French: You can choose between %d levels exciting. • German: You can between %d exciting levels choose. • Japanese: You %d exciting levels from choose can.
  • 6. Translation Pitfalls • If you need both singular and plural form, do not concatenate „s“ to the end of the word for the plural. • English: 1 fish – 2 fish; 1 wife – 2 wives; etc. • German: 1 Bier – 2 Biere; 1 Arbeit – 2 Arbeiten • French: 1 vin – 2 vins; 1 eau – 2 eaux • Chinese doesn't have a plural, but does have counters 1 ge ren – 2 ge ren; 1 ben shu – 2 ben shu • Swahili: 1 mtu – 2 watu; 1 jicho – 2 macho • Ditto for verbs • Also a complication, less likely to come up in iPhone programming: cases • Vi atakas elefanton. - You attack an elephant. Elefanto atakas vin. - An elephant attacks you.
  • 8. Localization: Respect Foreign Languages • Traficante mineral water • Silver Mist • Mitsubishi Pajero • „Bite the wax tadpole“ or „Happiness in your mouth“?
  • 9. Translation vs. Localization • Brand / product name • Form of address • Measurements • Date formats • Pictures and icons • Wording
  • 11. Implications of RTL Languages (Arabic, Hebrew)
  • 12. Retrieving the Current Locale NSLocale *locale = [NSLocale currentLocale]; NSString *currentLocale = [locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]]; NSLog( @"Complete locale: %@", currentLocale );
  • 13. App Interface • Press ⌘I to show Info window on xib file • General tab: Make File Localizable • Press ⌘I again on file... Add Localization • Add languages by 2-letter code • Right-click xib file and now edit other langs
  • 14. Images • See what images have text on them • Follow same procedure as for interfaces • Highlight file and choose Reveal in Finder • Replace other images with localized images
  • 15. Getting strings Displaying strings in app NSLocalizedString( @"Music", @"The menu item Music." ); NSLocalizedString( @"Films", @"The button Films." ); Displaying variables within string in app int titles = 142;[NSString stringWithFormat: NSLocalizedString( @"There are %d movie titles.", @"Movie statistics" ), titles];
  • 16. Strings file • Autogenerate Localizable.strings file • Go to root directory of app • Terminal: genstrings ./Classes/*.m • Make localizable like for interfaces • Translate file
  • 17. Localizable.strings Autogenerated file /* The button Films. */ "Films" = "Films";/* The menu item Music. */ "Music" = "Music"; Translated file /* The button Films. */ "Films" = "Filme";/* The menu item Music. */ "Music" = "Musik";
  • 18. App Store • iTunes Connect: Manage Your Application > Edit Information > Localization • Don’t forget planned promo text like: “SPECIAL OFFER: 50% OFF IN JULY!” • Official languages: Dutch, English, French, German, Italian, Japanese, Spanish • Other languages will need separate binary
  • 19. iPhone-i18n.com • Exclusively translating iPhone apps • We understand your linguistic and technical needs • Translators understand technicalities and are skilled at writing promotional texts • App with little text + App Store: only 60€ (US $85) • Translation package (many languages) = lower price
  • 20. Thank you ερωτήσεις? Frågor? Preguntas? Pytania? Вопросы? Questions? Demandoj? ?' ( ) * + Demandes? Vragen? ? Domande? Fragen?