Transcript
iOS App LocalizationInsights From A Real World Example
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
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
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/
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
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
• 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
• Single Localizable.strings file without duplicates
Code
StoryboardStoryboardStoryboardStoryboard
Localizable.strings
• Easy workflow for localizing a new version / feature
prepare_diff .strings file with only new strings
Translation
localized diffmerge
• Update strings from server
• Misc. capabilities: chicken test, word_count,
change locale on runtime, …
LAYOUT BUGS
• Avoid relying on label’s intrinsic content size for other views’ constraints
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.
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.
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)
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
LOCALIZING VIDEOSDEMO
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, …)
Вопросов?
שאלות?
Questions?
问题?
問題?¿Preguntas?
Les questions?
質問?
질문이 있으십니까?
פֿראגן?
Domande?
أسئلة؟
Fragen?
@theyonibomberyoni@joytunes.com
top related