ios app localization / yoni tsafir
TRANSCRIPT
![Page 1: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/1.jpg)
iOS App LocalizationInsights From A Real World Example
![Page 3: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/3.jpg)
ABOUT SIMPLY PIANO• Realtime feedback, works with
any piano or keyboard
• Trusted by millions of piano learners in over 100 countries. Localized to 11 languages.
• #1 on product hunt (> 1000 upvotes)
• 5-stars average star ratings
![Page 4: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/4.jpg)
GLOSSARY
• Internationalization (i18n) - the process of
designing and building an application to
facilitate localization
• Localization (L10n) - the cultural and
linguistic adaptation of an internationalized
application
![Page 5: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/5.jpg)
WHY LOCALIZE?• Leverage your KPIs with non-US markets.
• A prerequisite for being featured on App Store globally.
https://www.appannie.com/insights/market-data/q3-2016-index-china-hits-ios-app-store-milestone/
![Page 6: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/6.jpg)
WHY LOCALIZE - OUR STATS
• Featured in Front Page of App Store in 9 countries
• Top grossing education app in China
• 30% => 50% of revenue from non-English speaking countries
![Page 7: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/7.jpg)
WHY NOT LOCALIZE?
• Cost of internationalization
• Cost of translation
• Cost of culturalization
• A new dimension on the testing matrix(DEVICE x OS x LANG)
• Not a 1-time cost: new features / releases
https://www.flickr.com/photos/pictures-of-money/17121923990
![Page 8: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/8.jpg)
• Open Source - https://github.com/joytunes/JTLocalize
• Aims to solve common pains in built-in mechanism
• JTLocalizedString instead of NSLocalizedString in code
• JTLabel, JTButton, JTTextField, … in storyboards
• A set of python scripts
![Page 9: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/9.jpg)
• Single Localizable.strings file without duplicates
Code
StoryboardStoryboardStoryboardStoryboard
Localizable.strings
![Page 10: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/10.jpg)
• Easy workflow for localizing a new version / feature
prepare_diff .strings file with only new strings
Translation
localized diffmerge
![Page 11: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/11.jpg)
• Update strings from server
• Misc. capabilities: chicken test, word_count,
change locale on runtime, …
![Page 12: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/12.jpg)
LAYOUT BUGS
• Avoid relying on label’s intrinsic content size for other views’ constraints
![Page 13: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/13.jpg)
LAYOUT BUGS• Avoid fixed font size and making assumptions on text length.
• Apart from setting scale factor, and not “Word Wrap”, use
numberOfLines = 0 and a height constraint.
![Page 14: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/14.jpg)
LAYOUT BUGS• No way in Auto Layout to set constraints on font sizes of labels.
• Enumerate on font sizes using String’s boundingRectWithSize on the longest string per language.
![Page 15: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/15.jpg)
LOCALIZING VIDEOS
• Subtitles embedded in QuickTime instead of different video
per language
• Presented in WWDC '13 session 608, otherwise undocumented
• Use ffmpeg for embedding translated srt files to video
• Problem: ISO639-2 has no separation to Simplified vs.
Traditional Chinese (zh-Hans vs. zh-Hant)
![Page 16: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/16.jpg)
LOCALIZING VIDEOS - NARRATION
• QuickTime supports multiple audio tracks
• Couldn’t get it to work with ffmpeg
• File size impact would be substantial
• Ended up muting sound and using a
separate AVAudioPlayer
• Fiverr
![Page 17: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/17.jpg)
LOCALIZING VIDEOSDEMO
![Page 18: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/18.jpg)
CULTURALIZATION(IN OUR CASE)
• Note names vs. Chord names
• Song names(Lightly Row / Little Yonatan)
• Locale based songs
• Don’t forget England and Australia (Quarter vs. Crotchet, …)
![Page 19: iOs app localization / Yoni tsafir](https://reader034.vdocuments.mx/reader034/viewer/2022052214/58808af11a28ab35718b68ed/html5/thumbnails/19.jpg)
Вопросов?
שאלות?
Questions?
问题?
問題?¿Preguntas?
Les questions?
質問?
질문이 있으십니까?
פֿראגן?
Domande?
أسئلة؟
Fragen?