SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Localization
   for iOS




      1
Why?




 2
Why localize?


  English       Other
   80%          20%




            3
Situation
600000                                                  30000000


450000                                                  22500000


300000                                                  15000000


150000                                                   7500000


     0                                                        0
         apps     downloads (in K)   paid out (in $K)




                       4
Globalization
     G11n




      5
Internationalization
        I18n




         6
I18n Pitfalls
• Text in graphics
• Text in code

• Text overlap

• Character expansion




                        7
Localization
    L10n




     8
L10n Pitfalls
• Colors                 • Audio sounds
• Shapes                 • Famous example: Chevy
                          Nova
• Sounds

• Images

• Symbols

• Voice over


                     9
Translation
    T9n




     10
T9n Pitfalls
• Puns
• Idioms

• Metaphors

• Colloquialisms

• Character expansion




                        11
What?




  12
What to localize?
• Nib files                  • Online help
• Static text               • Dynamic text

• Icons and graphics        • Text handling code

• Sound files                • Tabular data

• Support website           • Social media

• etc.


                       13
Who?




 14
Who should localize?
• Yes:
  • Language Service Provider (LSP)
  • Localization Professional
  • Professional Translator
• No:
  • Machine Translation (e.g., Google Translate)
  • Your secretary’s “bilingual” second cousin
                        15
How?




 16
Languages




            17
Languages

                              Language   ISO 639-1       ISO 639-2




                              English    en              eng




                              French     fr              fre


• ISO 639-1, ISO 639-2
                              German     de              ger




                              Japanese   ja              jpn




                              Hawaiian   no designator   haw




                         18
Language Names

NSString *identifier = [[NSLocale currentLocale]
localeIdentifier];

NSString *displayName = [[NSLocale currentLocale]
displayNameForKey:NSLocaleIdentifier value:identifier];




                             19
Regions

                       Regional dialect          Region Designator




                       English (United States)   US




                       English (Great Britain)   GB


• ISO 3166-1
                       English (Australian)      AU




                       French (France)           FR




                       French (Canadian)         CA




                  20
Locales




          21
Resources




            22
Resource Files




                 23
Editing




          24
Unicode




          25
Dates
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]
init];

[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

NSDate *date = [NSDate
dateWithTimeIntervalSinceReferenceDate:162000];
NSString *formattedDateString = [dateFormatter
stringFromDate:date];
NSLog(@"formattedDateString: %@", formattedDateString);

// Output for locale en_US: "formattedDateString: Jan 2,
2001"




                             26
Numbers
NSNumberFormatter *numberFormatter = [[NSNumberFormatter
alloc] init];

[numberFormatter
setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *formattedNumberString = [numberFormatter
stringFromNumber:[NSNumber numberWithFloat:122344.4563]];

NSLog(@"formattedNumberString: %@", formattedNumberString);

// Output for locale en_US: "formattedNumberString:
formattedNumberString: 122,344.453"




                             27
Strings

/* Insert Element menu item */

"Insert Element" = "Element einschieben";

/* Error string used for unknown error types. */

"ErrorString_1" = "Ein unbekannter Fehler ist aufgetreten.";




                             28
Strings translation pitfalls
• Variable insertion
• Sentence fragmentation

• Dynamic text insertion

• Untranslatable text




                           29
Nib files
  strings




            30
Nib files pitfalls
• Lock all connections before handing your nibs off to
  translation

• Update minimum dialog or window sizes

• Have help tags for an object localized in Interface
  Builder’s inspector




                            31
ibtool
Extract
ibtool --generate-strings-file MainMenu.strings en.lproj/
MainMenu.nib

Merge
ibtool --strings-file de.lproj/MainMenu.strings --write
de.lproj/MainMenu.nib en.lproj/MainMenu.nib




                             32
Next?




  33
34
Giggles: Engrish.com




         35
Questions?



• dierk@icotext.com

• @icotext




                          36

Weitere ähnliche Inhalte

Ähnlich wie iOS Localization

Internationlization
InternationlizationInternationlization
InternationlizationTuan Ngo
 
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 MunichSuzanne 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 2012Suzanne Dergacheva
 
Internationalizing Your Apps
Internationalizing Your AppsInternationalizing Your Apps
Internationalizing Your AppsJohn Wilker
 
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...Infinum
 
Android Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and DevelopersAndroid Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and DevelopersDenis_infinum
 
There should be a tool for that - GameQALoc Barcelona 2016
There should be a tool for that - GameQALoc Barcelona 2016There should be a tool for that - GameQALoc Barcelona 2016
There should be a tool for that - GameQALoc Barcelona 2016Adolfo Gomez-Urda
 
Going Arabic - Tuga IT
Going Arabic - Tuga ITGoing Arabic - Tuga IT
Going Arabic - Tuga ITGil Faria
 
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 ...agileware
 
Abap slide class4 unicode-plusfiles
Abap slide class4 unicode-plusfilesAbap slide class4 unicode-plusfiles
Abap slide class4 unicode-plusfilesMilind Patil
 
Introduction to computers
Introduction to computersIntroduction to computers
Introduction to computersVisualBee.com
 
Going Arabic @ pixels camp 2019
Going Arabic @ pixels camp 2019Going Arabic @ pixels camp 2019
Going Arabic @ pixels camp 2019Gil Faria
 
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
 
End to-end convolutional semantic embeddings
End to-end convolutional semantic embeddingsEnd to-end convolutional semantic embeddings
End to-end convolutional semantic embeddingsharmonylab
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applicationsaccount inactive
 
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
 
Low Level Graphics & OpenGL
Low Level Graphics & OpenGLLow Level Graphics & OpenGL
Low Level Graphics & OpenGLDominic Farolino
 
Beyond English - Make Your Android App a Global Success
Beyond English - Make Your Android App a Global SuccessBeyond English - Make Your Android App a Global Success
Beyond English - Make Your Android App a Global SuccessMotorola Mobility - MOTODEV
 

Ähnlich wie iOS Localization (20)

Internationlization
InternationlizationInternationlization
Internationlization
 
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
 
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
 
Internationalizing Your Apps
Internationalizing Your AppsInternationalizing Your Apps
Internationalizing Your Apps
 
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
Infinum Android Talks #03 - Android Design Best Practices - for Designers and...
 
Android Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and DevelopersAndroid Talks #3 Android Design Best Practices - for Designers and Developers
Android Talks #3 Android Design Best Practices - for Designers and Developers
 
There should be a tool for that - GameQALoc Barcelona 2016
There should be a tool for that - GameQALoc Barcelona 2016There should be a tool for that - GameQALoc Barcelona 2016
There should be a tool for that - GameQALoc Barcelona 2016
 
Going Arabic - Tuga IT
Going Arabic - Tuga ITGoing Arabic - Tuga IT
Going Arabic - Tuga IT
 
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 ...
 
Abap slide class4 unicode-plusfiles
Abap slide class4 unicode-plusfilesAbap slide class4 unicode-plusfiles
Abap slide class4 unicode-plusfiles
 
Introduction to computers
Introduction to computersIntroduction to computers
Introduction to computers
 
Going Arabic @ pixels camp 2019
Going Arabic @ pixels camp 2019Going Arabic @ pixels camp 2019
Going Arabic @ pixels camp 2019
 
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
 
End to-end convolutional semantic embeddings
End to-end convolutional semantic embeddingsEnd to-end convolutional semantic embeddings
End to-end convolutional semantic embeddings
 
Translating Qt Applications
Translating Qt ApplicationsTranslating Qt Applications
Translating Qt Applications
 
Multilingual drupal 7
Multilingual drupal 7Multilingual drupal 7
Multilingual drupal 7
 
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
 
Low Level Graphics & OpenGL
Low Level Graphics & OpenGLLow Level Graphics & OpenGL
Low Level Graphics & OpenGL
 
Beyond English - Make Your Android App a Global Success
Beyond English - Make Your Android App a Global SuccessBeyond English - Make Your Android App a Global Success
Beyond English - Make Your Android App a Global Success
 
Perl5 VS JSON
Perl5 VS JSONPerl5 VS JSON
Perl5 VS JSON
 

Mehr von Dierk Seeburg

Safari One Page Dierk
Safari One Page DierkSafari One Page Dierk
Safari One Page DierkDierk Seeburg
 
The Value of Learning another Language
The Value of Learning another LanguageThe Value of Learning another Language
The Value of Learning another LanguageDierk Seeburg
 
Localization For iPhone and Other iOS Devices
Localization For iPhone and Other iOS DevicesLocalization For iPhone and Other iOS Devices
Localization For iPhone and Other iOS DevicesDierk Seeburg
 
ATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacDierk Seeburg
 
ATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgDierk Seeburg
 
MATI 2009 Conference: QA Tips and Tricks
MATI 2009 Conference: QA Tips and TricksMATI 2009 Conference: QA Tips and Tricks
MATI 2009 Conference: QA Tips and TricksDierk Seeburg
 
MATI 2009 Conference: CAT Tools
MATI 2009 Conference: CAT ToolsMATI 2009 Conference: CAT Tools
MATI 2009 Conference: CAT ToolsDierk Seeburg
 
ATA 2009 Translation Tools Seminar
ATA 2009 Translation Tools SeminarATA 2009 Translation Tools Seminar
ATA 2009 Translation Tools SeminarDierk Seeburg
 
ATA 2008 LT-4 Free and Open Source Software for Translators
ATA 2008 LT-4 Free and Open Source Software for TranslatorsATA 2008 LT-4 Free and Open Source Software for Translators
ATA 2008 LT-4 Free and Open Source Software for TranslatorsDierk Seeburg
 
Web-based Translation Portals & TMSs
Web-based Translation Portals & TMSsWeb-based Translation Portals & TMSs
Web-based Translation Portals & TMSsDierk Seeburg
 
FOSS for Translators
FOSS for TranslatorsFOSS for Translators
FOSS for TranslatorsDierk Seeburg
 
QA for the Translation Industry
QA for the Translation IndustryQA for the Translation Industry
QA for the Translation IndustryDierk Seeburg
 

Mehr von Dierk Seeburg (13)

Safari One Page Dierk
Safari One Page DierkSafari One Page Dierk
Safari One Page Dierk
 
The Value of Learning another Language
The Value of Learning another LanguageThe Value of Learning another Language
The Value of Learning another Language
 
Localization For iPhone and Other iOS Devices
Localization For iPhone and Other iOS DevicesLocalization For iPhone and Other iOS Devices
Localization For iPhone and Other iOS Devices
 
ATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The MacATA 2009 LT-10 Why You Want To Translate On The Mac
ATA 2009 LT-10 Why You Want To Translate On The Mac
 
ATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk Seeburg
 
MATI 2009 Conference: QA Tips and Tricks
MATI 2009 Conference: QA Tips and TricksMATI 2009 Conference: QA Tips and Tricks
MATI 2009 Conference: QA Tips and Tricks
 
MATI 2009 Conference: CAT Tools
MATI 2009 Conference: CAT ToolsMATI 2009 Conference: CAT Tools
MATI 2009 Conference: CAT Tools
 
ATA 2009 Translation Tools Seminar
ATA 2009 Translation Tools SeminarATA 2009 Translation Tools Seminar
ATA 2009 Translation Tools Seminar
 
ATA 2008 LT-4 Free and Open Source Software for Translators
ATA 2008 LT-4 Free and Open Source Software for TranslatorsATA 2008 LT-4 Free and Open Source Software for Translators
ATA 2008 LT-4 Free and Open Source Software for Translators
 
AC4GC.org
AC4GC.orgAC4GC.org
AC4GC.org
 
Web-based Translation Portals & TMSs
Web-based Translation Portals & TMSsWeb-based Translation Portals & TMSs
Web-based Translation Portals & TMSs
 
FOSS for Translators
FOSS for TranslatorsFOSS for Translators
FOSS for Translators
 
QA for the Translation Industry
QA for the Translation IndustryQA for the Translation Industry
QA for the Translation Industry
 

Kürzlich hochgeladen

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

iOS Localization

  • 1. Localization for iOS 1
  • 3. Why localize? English Other 80% 20% 3
  • 4. Situation 600000 30000000 450000 22500000 300000 15000000 150000 7500000 0 0 apps downloads (in K) paid out (in $K) 4
  • 5. Globalization G11n 5
  • 7. I18n Pitfalls • Text in graphics • Text in code • Text overlap • Character expansion 7
  • 8. Localization L10n 8
  • 9. L10n Pitfalls • Colors • Audio sounds • Shapes • Famous example: Chevy Nova • Sounds • Images • Symbols • Voice over 9
  • 10. Translation T9n 10
  • 11. T9n Pitfalls • Puns • Idioms • Metaphors • Colloquialisms • Character expansion 11
  • 13. What to localize? • Nib files • Online help • Static text • Dynamic text • Icons and graphics • Text handling code • Sound files • Tabular data • Support website • Social media • etc. 13
  • 15. Who should localize? • Yes: • Language Service Provider (LSP) • Localization Professional • Professional Translator • No: • Machine Translation (e.g., Google Translate) • Your secretary’s “bilingual” second cousin 15
  • 17. Languages 17
  • 18. Languages Language ISO 639-1 ISO 639-2 English en eng French fr fre • ISO 639-1, ISO 639-2 German de ger Japanese ja jpn Hawaiian no designator haw 18
  • 19. Language Names NSString *identifier = [[NSLocale currentLocale] localeIdentifier]; NSString *displayName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:identifier]; 19
  • 20. Regions Regional dialect Region Designator English (United States) US English (Great Britain) GB • ISO 3166-1 English (Australian) AU French (France) FR French (Canadian) CA 20
  • 21. Locales 21
  • 22. Resources 22
  • 24. Editing 24
  • 25. Unicode 25
  • 26. Dates NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:162000]; NSString *formattedDateString = [dateFormatter stringFromDate:date]; NSLog(@"formattedDateString: %@", formattedDateString); // Output for locale en_US: "formattedDateString: Jan 2, 2001" 26
  • 27. Numbers NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; NSString *formattedNumberString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:122344.4563]]; NSLog(@"formattedNumberString: %@", formattedNumberString); // Output for locale en_US: "formattedNumberString: formattedNumberString: 122,344.453" 27
  • 28. Strings /* Insert Element menu item */ "Insert Element" = "Element einschieben"; /* Error string used for unknown error types. */ "ErrorString_1" = "Ein unbekannter Fehler ist aufgetreten."; 28
  • 29. Strings translation pitfalls • Variable insertion • Sentence fragmentation • Dynamic text insertion • Untranslatable text 29
  • 30. Nib files strings 30
  • 31. Nib files pitfalls • Lock all connections before handing your nibs off to translation • Update minimum dialog or window sizes • Have help tags for an object localized in Interface Builder’s inspector 31
  • 32. ibtool Extract ibtool --generate-strings-file MainMenu.strings en.lproj/ MainMenu.nib Merge ibtool --strings-file de.lproj/MainMenu.strings --write de.lproj/MainMenu.nib en.lproj/MainMenu.nib 32
  • 34. 34

Hinweis der Redaktion

  1. Hi, I’m Dierk Seeburg. I’m a professional translator so this presentation is shaped from a translator’s point of view.\n
  2. Why would you want to localize?\n
  3. The Pareto principle (also known as the 80–20 rule, the law of the vital few, and the principle of factor sparsity) states that, for many events, roughly 80% of the effects come from 20% of the causes.\n
  4. About 20% of total revenue comes from non-English speaking countries.\nIf you’re developing commercial software, you’re going to want to sell it globally.\nIf you don’t, you’re leaving money on the table.\n
  5. 600000 apps in the app store\n25 billion downloads\nUSD 5 billion paid out\n
  6. Globalization is the global distribution of the production of goods and services, through reduction of barriers to international trade.\n
  7. Internationalization is the process of designing and building an application to facilitate localization.\nCreating separate user-visible text and images from your executable code and translating them into desired languages.\nIntegrating the content back into your app as separate localized resource files stored within your app’s bundle.\nUsing system provided APIs to express and manage user-visible or dynamically generated values properly across different locales (e.g. dates, lengths, weights, price and currency symbols).\nEnsuring your app accepts user-generated text in any language and in multiple languages at once, independent of the language of the user interface.\n
  8. \n
  9. Localization, in turn, is the cultural and linguistic adaptation of an internationalized application to two or more culturally-distinct markets. When users launch a well-localized application, they should feel fully at home with it and not feel like it originated from some other country.\n
  10. \n
  11. Localizing an application often involves translating the user-visible text of the application, but that is only part of the work that must be done.\n
  12. \n
  13. What do you need to localize?\n
  14. Nib files, that is files containing windows, views, menus must be modified to accept translated text.\nStatic text must be translated.\nIcons and graphics (especially those containing culture-specific images) must be changed to be more culturally appropriate.\nSound files that contain spoken language must be rerecorded for each supported language.\nSupport websites must be localized to provide a culturally appropriate support structure.\nOnline help must be translated.\nDynamic text generated by your program (including dates, times, and numerical values) must be formatted using the current locale information.\nText handling code must calculate word breaks using the current locale information.\nTabular data must be sortable using the current locale information.\nMarketing materials used in social media must be translated to provide a culturally consistent experience.\n
  15. Who should you ask to localize?\n
  16. \n
  17. How do you go about localizing your resources?\n
  18. Users specify the languages they would prefer to see using the preferences of the target platform\n
  19. For language designations, you can use either the ISO 639-1 or ISO 639-2 conventions. The ISO 639-1 specification uses a two-letter code to identify a language and is the preferred way to identify languages. However, if an ISO 639-1 code is not available for a particular language, you may use the three-letter designators defined by the ISO 639-2 specification instead. Table 1 lists ISO designators for a subset of languages. Note that there is no ISO 639-1 designator for Hawaiian and so you must use the ISO 639-2 designator.\n
  20. Few users can recognize languages by their ISO designators. If you need to display the actual name of a language to a user, you can use the NSLocale method displayNameForKey:value: to get the correct display name for the language or locale ID.\n
  21. For regional designations, you can use the ISO 3166-1 conventions. This specification uses a two-letter, capitalized code to identify a specific country. By concatenating a language designator with an underscore character and a regional designator, you get a designator that identifies the locale for a specific language and country. Table 2 lists the regional designators for a subset of languages and countries.\n
  22. Locale preferences convey regional differences for the way dates, times, and numbers are displayed. Mac OS X and iOS specify predefined locales for many world regions, as shown here. In iOS, the user can select the desired region only, but in Mac OS X the user can also customize the information for any of the default locales to further personalize the system.\nThe Foundation framework provides the NSLocale class and the Core Foundation framework provides the CFLocaleRef opaque type for retrieving locale information.\n
  23. The resource files for a single localization are stored together in a language-specific project directory, which is a directory whose name is a combination of the language name and the .lproj filename extension\n
  24. At localization time, you send the source-language .lproj folder (for example, en.lproj for developers in English-speaking countries) to a localization service, or to your in-house translation department. You also need to send the compiled application to allow the localizer to view dynamically-loaded resources in context, to ensure appropriate translations and to ensure adequate dimensions for user interface elements that display dynamically-loaded resources. For each target language, the translator sends back a .lproj folder in which each resource file has been appropriately localized.\n
  25. The tool used by localization teams to edit resource files varies by resource type. Nib files are typically edited using the Interface Builder application. Other resource files can be edited with an appropriate editor. For strings files, you can use most text editors in Mac OS X. Whenever possible though, use an editor that can save text in Unicode format, such as the TextEdit application. String files saved in Unicode format can be used in a running application directly, while other file formats must be converted to Unicode before they can be used.\n
  26. Applications should use Unicode-based technologies in all situations that involve displaying text to the user. Unicode support is essential for multibyte languages and the system supports some languages (including Arabic, Thai, Greek, and Hawaiian) only through Unicode. Regardless of whether you localize your software for multibyte languages, you should still support Unicode so that users can enter text data in their native language.\n
  27. Use formatter objects to interpret dates and numbers and to present them to the user. To format dates use NSDateFormatter objects.\n
  28. To format numbers, use the NSNumberFormatter objects.\n
  29. For localized strings, use the NSLocalizedString macro (and related macros) .\n
  30. \n
  31. In Interface Builder 3.0 and later, you can obtain a list of the strings in your nib file by choosing Tools > Strings. The window that appears (Figure 1) contains a list of the objects in your nib file along with entries for each property that contains a string that might be displayed to the user. The Value column shows the string (if any) that is set for each property when the nib file is loaded into memory.\nIn addition to viewing all of the strings in a nib file, developers and translators can also use the Strings window it to edit the string values. Double-clicking the value for an entry makes that entry editable. If you specify a new value, Interface Builder applies that value to the specified property.\n
  32. \n
  33. Localizing strings in nib files is a two step process. First you need to extract the source strings and then you need to merge the translated strings back into the localized version of the nib.\nUsing the ibtool you can extract the English strings from the main nib of a project into a new strings file. You can store a copy of the resulting file for use later or give the file to the translation team.\nThe merge example takes the original English-based nib file and merges it with the translated strings to create a localized version of the nib:\n
  34. What’s next? Lastly, you should promote your app in local markets. Apple offers promotional badges that are localized in many languages, which you can use to promote your iOS and Mac apps in the App Store. It’s another simple thing you can do to make your app stand out to a broader audience. iOS and Mac Developer Program members can download these badges from the App Store Resource Center.\n\n
  35. This sign was posted in Swansea, Wales, and the bottom half of the sign is written in Welsh. The translation of the Welsh is, "I am not in the office at the moment. Send any work to be translated."\n
  36. If you would like to see some examples of localization gone horribly wrong, then do yourself a favor and go to Engrish.com\n
  37. Let me know, if you have any questions!\n