iOs app localization / Yoni tsafir

19
iOS App Localization Insights From A Real World Example

Transcript of iOs app localization / Yoni tsafir

Page 1: iOs app localization / Yoni tsafir

iOS App LocalizationInsights From A Real World Example

Page 3: iOs app localization / Yoni tsafir

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

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

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

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

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

• 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

• Single Localizable.strings file without duplicates

Code

StoryboardStoryboardStoryboardStoryboard

Localizable.strings

Page 10: iOs app localization / Yoni tsafir

• 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

• Update strings from server

• Misc. capabilities: chicken test, word_count,

change locale on runtime, …

Page 12: iOs app localization / Yoni tsafir

LAYOUT BUGS

• Avoid relying on label’s intrinsic content size for other views’ constraints

Page 13: iOs app localization / Yoni tsafir

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

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

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

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

LOCALIZING VIDEOSDEMO

Page 18: iOs app localization / Yoni tsafir

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

Вопросов?

שאלות?

Questions?

问题?

問題?¿Preguntas?

Les questions?

質問?

질문이 있으십니까?

פֿראגן?

Domande?

أسئلة؟

Fragen?

@[email protected]