Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Localization Explained - 360iDev Denver, August 2015

Localization Explained - 360iDev Denver, August 2015

My talk from 360iDev 2015 about localization! Now featuring a few screenshots I couldn't quite find during the initial talk :)

The code is on GitHub as both a playground and a project:
https://github.com/designatednerd/LocalizationExplained

The videos are available here:
Mail Composed Character Input: https://www.youtube.com/watch?v=vsGvDk0Od_E
Hum Broken in Japanese: https://www.youtube.com/watch?v=V5CuuoVF5IY
Hum Fixed in Japanese: https://www.youtube.com/watch?v=RvKP0bXIVhs

Ellen Shapiro
PRO

August 17, 2015
Tweet

More Decks by Ellen Shapiro

Other Decks in Technology

Transcript

  1. Localization, Explained
    !"#$%&'()*+,
    360iDev | Denver, CO | August 2015
    by Ellen Shapiro | @designatednerd
    vokal.io | justhum.com | designatednerd.com

    View Slide

  2. Internationalization, Explained
    !"#$%&'()*+,
    360iDev | Denver, CO | August 2015
    by Ellen Shapiro | @designatednerd
    vokal.io | justhum.com | designatednerd.com

    View Slide

  3. 69%
    of apple's revenue is from outside the U.S

    View Slide

  4. 41%
    of iOS users are from China and Japan

    View Slide

  5. Languages
    Names
    Dates, Times and Time Zones
    Numbers and Measurements

    View Slide

  6. Languages

    View Slide

  7. Languages
    are more complicated than you realize

    View Slide

  8. http://www.snopes.com/cokelore/tadpole.asp

    View Slide

  9. How your app knows
    what language to use

    View Slide

  10. View Slide

  11. How to tell the system
    what to translate

    View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Language Tips!

    View Slide

  29. Localized String
    Convenience Class/Struct

    View Slide

  30. View Slide

  31. View Slide

  32. Twine

    View Slide

  33. View Slide

  34. Don't forget to localize
    accessibility strings

    View Slide

  35. Languages You Don't Understand
    Affect Your UI

    View Slide

  36. Sometimes Things get
    Much Much Much Much Longer

    View Slide

  37. ! German !

    View Slide

  38. Privacy Policy
    Datenschutz-Bestimmugen

    View Slide

  39. Privacy Policy
    Datenschutz-Bestimmugen

    View Slide

  40. Sometimes Things get
    short

    View Slide

  41. ! Japanese !

    View Slide

  42. No Smoking

    View Slide

  43. No Smoking

    View Slide

  44. Pseudolanguages and
    Officially Supported Languages

    View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. Watch out for
    Composed characters

    View Slide

  49. View Slide

  50. Bah, Hum Bug

    View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. Sometimes Things Go
    thgiR
    ot
    tfeL

    View Slide

  56. Sometimes Things Go
    Right
    to
    Left

    View Slide

  57. ! Hebrew & Arabic "

    View Slide

  58. NEW iOS 9 Toy:
    Automatic RTL Support

    View Slide

  59. View Slide

  60. View Slide

  61. Names

    View Slide

  62. Names
    are more complicated than you realize

    View Slide

  63. Order and Meaning
    differ across languages

    View Slide

  64. NEW iOS 9 Toy:
    NSPersonNameComponentsFormatter

    View Slide

  65. NEW in iOS 9:
    NS Person Name Components Formatter

    View Slide

  66. View Slide

  67. View Slide

  68. Name Components Formatter
    Pitfalls

    View Slide

  69. Legal name
    vs.
    Preferred name

    View Slide

  70. Language
    vs. Locale

    View Slide

  71. Dates, Times,
    and Timezones

    View Slide

  72. View Slide

  73. Dates, Times,
    and Timezones
    are more complicated than you realize

    View Slide

  74. View Slide

  75. NSDateFormatter

    View Slide

  76. View Slide

  77. NSDateComponents
    let apple do the math for you

    View Slide

  78. NSTimeZone
    because nobody likes daylight savings time

    View Slide

  79. NSCalendar
    Who you callin' Gregorian?

    View Slide

  80. View Slide

  81. Numbers and
    Measurements

    View Slide

  82. Numbers and
    Measurements
    you know these are complicated

    View Slide

  83. View Slide

  84. View Slide

  85. View Slide

  86. View Slide

  87. TEH Codez
    https://github.com/designatednerd/LocalizationExplained

    View Slide

  88. Tools
    » Twine: https://www.mobiata.com/blog/2012/02/08/
    twine-string-management-ios-mac-os-x
    » Genstrings across multiple directories: http://
    stackoverflow.com/questions/2744401/how-to-use-
    genstrings-across-multiple-directories

    View Slide

  89. Recommended Reading/Viewing: Not Apple
    » Laura Savino at AltConf: https://realm.io/news/
    altconf-laura-savino-localization-because-n-est-
    pas-por-todo-el-mundo/
    » Tom Scott: The Problem With Time And Timezones:
    https://www.youtube.com/watch?v=-5wpm-gesOY

    View Slide

  90. Recommended Reading: Apple
    » Internationalization and Localization Guide:
    https://developer.apple.com/library/ios/
    documentation/MacOSX/Conceptual/BPInternational/
    Introduction/Introduction.html
    » How iOS Determines the Language For Your App
    https://developer.apple.com/library/ios/qa/qa1828/
    _index.html

    View Slide

  91. Recommended Viewing: Apple
    WWDC 2015
    » 222: New UIKit Support for International User
    Interfaces
    » 227: What's New In Internationalization
    WWDC 2014
    » 201: Advanced Topics in Internationalization
    » 412: Localizing With Xcode 6

    View Slide

  92. Photo Credits
    » Matthew McConaughey in True Detective © HBO, used
    for illustrative purposes only.

    View Slide