Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Localization.pdf
Search
Aydar
December 14, 2017
Programming
0
29
Localization.pdf
Presentation for the Munich iOS Developers Meetup
Aydar
December 14, 2017
Tweet
Share
More Decks by Aydar
See All by Aydar
The Realities of A/B Testing
aydarin
0
50
Development on Kotlin/Native and Swift
aydarin
1
79
AppCode under the hood
aydarin
1
130
Bridging the gap between Kotlin and Swift
aydarin
0
82
A look into AB testing
aydarin
0
65
Exploring MVVM-C
aydarin
0
96
Coordinate your app
aydarin
1
53
MVVM vs MVP
aydarin
1
200
image_optimization.pdf
aydarin
0
46
Other Decks in Programming
See All in Programming
Folding Cheat Sheet #1
philipschwarz
PRO
0
210
코틀린으로 멀티플랫폼 만들기
pangmoo
0
110
デザインシステムで Tailwind CSSとCSS in JSに分散投資をしたら良かった話
fsubal
18
4.8k
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
230
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
330
雑に思考を整理する技術と効能
konifar
52
23k
OpenTelemetry のサービスという概念について
azukiazusa1
2
1k
Creating Retro-Style Photos Using Swift
ski
1
890
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
110
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
820
入門 AWS Amplify Gen2 / Introduction to AWS Amplify Gen2
genkiogasawara
1
300
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
31
21k
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Atom: Resistance is Futile
akmur
258
25k
Designing for Performance
lara
601
67k
Scaling GitHub
holman
457
140k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
In The Pink: A Labor of Love
frogandcode
137
21k
Building Your Own Lightsaber
phodgson
97
5.7k
Building Applications with DynamoDB
mza
88
5.6k
Facilitating Awesome Meetings
lara
40
5.6k
GraphQLの誤解/rethinking-graphql
sonatard
49
9.2k
The Invisible Side of Design
smashingmag
293
49k
Designing for humans not robots
tammielis
247
25k
Transcript
Improve your app localization with .stringsdict Aydar Mukhametzyanov, Freeletics
Agenda 1.The story 2.Handling plurals with .stringsdict 3.Adaptive strings
Who knows what .stringsdict is?
1.The story 2.Handling plurals with .stringsdict 3.Adaptive strings
!"#$ %&'( The story
The story !"#$ %&'( ) * +
The story Category Count ! * One 1 1 month
1 miesiąc Few 2-4, 22-24, 32-34,… 2 months 2 miesiące Many 5-19, 100,… 5 months 5 miesięcy Other 0.0-1.5, 10.0 1.5 months 1.5 miesiąca
The story if count == 1 { // one }
else { // many } !
The story if count >= 5 && count <= 19
{ // many } else if lastDigit == 1 { // one } else if lastDigit > 1 && lastDigit < 5 { // few } else { // many } )
1.The story 2.Handling plurals with .stringsdict 3.Adaptive strings
Handling plurals { login_button_title: Login, … }
Handling plurals { login_button_title: Login, … days_one: %d day, days_many:
%d days, … }
Handling plurals { login_button_title: Login, … days_one: %d day, days_many:
%d days, … } if count == 1 { // Use days_one } else { // Use days_many }
Handling plurals { login_button_title: Login, … days: { one: %d
day, many: %d days } … }
Handling plurals { login_button_title: Login, … days: { one: %d
day, many: %d days } … } String.localizedString(key: “days", count: count)
Handling plurals
Handling plurals
Handling plurals Localizable.sctringsdict Key Format Localization Plural cases
Handling plurals
Handling plurals Plural cases: zero, one, two, few, many, other
http://www.unicode.org/cldr/charts/29/supplemental/language_plural_rules.html
Handling plurals
How to use? Handling plurals
Handling plurals let format = NSLocalizedString("days", comment: "") let string
= String.localizedStringWithFormat(format, 12) How to use?
Handling plurals let format = NSLocalizedString("days", comment: "") let string
= String.localizedStringWithFormat(format, 12) New localization doesn’t bring code changes
Handling plurals • Localizable.stringsdict • Specific format for plural rules
• Available since iOS 7
1.The story 2.Handling plurals with .stringsdict 3.Adaptive strings
Adaptive strings
Adaptive strings Key “M width available on the screen” (WWDC
2015, Session 227, 15:06) Localization options
Adaptive strings “M width available on the screen” (WWDC 2015,
Session 227, 15:06)
How to use? Adaptive strings
Adaptive strings textLabel.text = NSLocalizedString("gdp", comment: "") How to use?
Adaptive strings textLabel.text = NSLocalizedString("gdp", comment: "") New localization doesn’t
bring code changes
Adaptive strings • Specific format for adaptive strings • Easy
to start using • Available since iOS 9
Resources • WWDC 2013 Session 219: Making Your App World-Ready
• WWDC 2015 Session 227: What’s new in Internationalization • WWDC 2017 Session 401: Localizing with Xcode 9 • Demo app: https://github.com/aydarin/localizationdemo Contacts aydar.mukh
[email protected]
aydarin
Demo