Slide 1

Slide 1 text

Successful Locali(z)(s)ation Droidcon Berlin 2016 Kentaro Takiguchi @rejasupotaro

Slide 2

Slide 2 text

Introduction Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion

Slide 3

Slide 3 text

About our service Cookpad is the largest recipe sharing service in Japan. From 2014, Cookpad has started expanding the service globally.

Slide 4

Slide 4 text

This is the first step of our The previous logo looks “loud” in foreign countries

Slide 5

Slide 5 text

We have branch offices around the world and collaborate with local members

Slide 6

Slide 6 text

We support English, Español, ภาษาไทย, Bahasa Indonesia, Tiếng Việt, … Each locale has different lifestyle and different recipes.

Slide 7

Slide 7 text

Why Go Global Should we really do it?

Slide 8

Slide 8 text

http://www.kpcb.com/internet-trends

Slide 9

Slide 9 text

http://www.internetworldstats.com/stats7.htm

Slide 10

Slide 10 text

Can you find Japan?

Slide 11

Slide 11 text

That’s it.

Slide 12

Slide 12 text

Global Project - Domestic Project = Localization The only different between global project and domestic project is localization

Slide 13

Slide 13 text

GLOBALIZATION = INTERNATIONALIZATION = LOCALIZATION = TRANSLATION = CALTURALIZATION ??? What’s the difference between these terms?

Slide 14

Slide 14 text

Internationalization • The process of designing a service so that it can potentially be adapted to various languages and region without engineering changes. a.k.a. i18n

Slide 15

Slide 15 text

Localization • The process of adapting internationalized service for a specific language or region by adding locale specific components or text. a.k.a. l10n

Slide 16

Slide 16 text

Extract string resources →Internationalization i18n and l10n are can’t be separated. Add local language resources →Localization

Slide 17

Slide 17 text

In my understanding. Globalization Internationalization Localization Translation Industry Legal Religion Culture

Slide 18

Slide 18 text

Real World Localization Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion

Slide 19

Slide 19 text

Have you ever played this game?

Slide 20

Slide 20 text

In the latest title, they completely support Arabic and added an Arabic playable character named Rashid

Slide 21

Slide 21 text

Users growth in Arabic is 6,592.5%. It increases interest as a new market.

Slide 22

Slide 22 text

Far Cry 4 is an open world first person shooter video game developed by Ubisoft

Slide 23

Slide 23 text

Localized version was released 2 months later What’s the difference between the original version and the localized version? " Released on November 2014 # Released on January 2015

Slide 24

Slide 24 text

Violence and Obscene They have different standard " Released on November 2014 # Released on January 2015

Slide 25

Slide 25 text

A word “Drug” can’t be used in Japan. They changed the expression like “This is something makes you feel better”.

Slide 26

Slide 26 text

Each country has different rules https://support.google.com/googleplay/answer/6209544?hl=en Content Rating in Google Play • North & South America • Europe & Middle East • Germany • Australia (Games only) • Brazil • South Korea • Other countries

Slide 27

Slide 27 text

These movie posters are for the same movie. The poster designed in Japan has much more information. A closed-room mystery made by Quentin Trantino Who will be able to survive? 8 ruffians, all of them are liar This movie should be an Academy Award winning

Slide 28

Slide 28 text

Asian people put information into small space

Slide 29

Slide 29 text

It encourage consumer purchasing sentiment for people living in there

Slide 30

Slide 30 text

International availability of McDonald’s products I don’t know how much German people love % Pasta # Red beans paste & McBeer

Slide 31

Slide 31 text

The preference depends on what they have had before now

Slide 32

Slide 32 text

McDonald’s in india has numerous vegetarian options

Slide 33

Slide 33 text

Pay attention what people feel

Slide 34

Slide 34 text

Opportunities and Challenges • Language • Religion • History • Industry • Legal issues • Climate • Infrastructure • … Big opportunities and big challenges

Slide 35

Slide 35 text

Localization in Development Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion

Slide 36

Slide 36 text

Localize your app • LTR, RTL • Locale • Format • Performance • APK size • Traffic • … Only in the field of Android development, there are many things to consider • Writing system • Character • Encoding • Font • Text size • Grammer • Text length

Slide 37

Slide 37 text

There are various writing systems in the world we are living

Slide 38

Slide 38 text

We don’t need to worry about characters if we use the same encoding, right? Unicode 9.0 128,172 characters

Slide 39

Slide 39 text

Unicode and Characters https://medium.com/behancetech/localization-gotchas-for-asian-languages-cjk-e52a57c0fde1

Slide 40

Slide 40 text

They would uninstall your app # This app doesn’t seem to support Japanese Uninstall Custom font The same unicode value

Slide 41

Slide 41 text

Font The text is rendered perfectly! How about in other languages?

Slide 42

Slide 42 text

Text Size These font and the text size are the same between screenshots

Slide 43

Slide 43 text

Text Size According to my colleague, using the same text size doesn’t work in Arabic 27sp 25sp 21sp 19sp 17sp 15sp 13sp 11sp 26sp 24sp 20sp 18sp 16sp 14sp 12sp 10sp

Slide 44

Slide 44 text

Text Size The difference is small but it helps Arabic users a lot Default (ar) +1 sp (ar)

Slide 45

Slide 45 text

• Alphabets: • Syllabaries: • Logographies: 3 kind of types of writing systems

Slide 46

Slide 46 text

Logographies Logographies can contain a lot of meaning in just one character

Slide 47

Slide 47 text

How to say “Butterfly” Writing systems affect text length # ௏ % Farfalla ' Mariposa ( Papillon & SCHMETTERLING!!!

Slide 48

Slide 48 text

I make sure to check all layouts in German when I launch my app in Germany

Slide 49

Slide 49 text

Word Order: SVO SVO: 488 languages " I eat bread = [Subject] [Verb] [Object]

Slide 50

Slide 50 text

Word Order: SOV SOV: 565 languages # I bread eat = [Subject] [Object] [Verb]

Slide 51

Slide 51 text

Word Order: VSO VSO: 95 languages ) Eat I bread = [Verb] [Subject] [Object]

Slide 52

Slide 52 text

Word Order • " = [Subject] [Verb] [Object] • # = [Subject] [Object] [Verb] • ) = [Verb] [Subject] [Object] What’s the impact of this difference?

Slide 53

Slide 53 text

Quantity: Ingredient Name? Which order does it look natural?

Slide 54

Slide 54 text

Left-To-Right and Right-To-Left Some languages start from the right and continue to the left

Slide 55

Slide 55 text

Depending on the text direction, we also need to flip views and some icons Flipped

Slide 56

Slide 56 text

https://developer.android.com/about/versions/android-4.2.html#RTL

Slide 57

Slide 57 text

How to support RTL The cost of supporting RTL was not so high than I expected • layout_marginLeft => layout_marginStart • layout_marginRight => layout_marginEnd • layout_alignParentLeft => layout_alignParentStart • layout_alignParentRight => layout_alignParentEnd • …

Slide 58

Slide 58 text

Some components need to be flipped by hand FloatingActionButton ViewPager

Slide 59

Slide 59 text

Put your app on a diet It affects the number of daily downloads. We should avoid adding locale specific resources as much as possible.

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Sometimes we need to add locale specific images like this Flipped

Slide 62

Slide 62 text

Locale • A set of parameters that defines a user language and country. • It is used to identify user’s environment. Identifying the user environment is important to provide optimized content. Locale.getDefault()

Slide 63

Slide 63 text

en-US Language codes are defined in ISO 639. Country codes are defined in ISO 3166. ISO 639 ISO 3166 = new Locale(“en”, “US”);

Slide 64

Slide 64 text

Language != Country Spanish is spoken widely. We have 4 translations only for Spanish. en-US American English en-GB British English es-ES Spanish Spanish es-419 Latin American Spanish pt-PT Portuguese in Portugal pt-BR Portuguese in Brazil zh-CN Simplified Chinese zh-TW Traditional Chinese

Slide 65

Slide 65 text

The order and the format are totally changed Formatter.format(new Date()); // => # 2016/06/09 ޕޙ11:50 Formatter.format(new Date()); // => " 6/9/16 11:50 PM Formatter.format(new Date()); // => + 09/06/16 11:50 PM

Slide 66

Slide 66 text

Format We should use formatters. Don’t write it by hand, it couldn’t make sense in some counties. US English French German Spanish Italian Japanese Time hh:mm:ss am/pm (12- hour clock) hh:mm:ss (24-hour clock) hh:mm:ss (24-hour clock) hh:mm:ss (24-hour clock) hh:mm:ss (24-hour clock) hh:mm:ss (24-hour clock) Decimal Separator period (.) comma (,) comma (,) comma (,) comma (,) period (.) Thousand Separator comma (,) space ( ) space ( ) or period (.) space ( ) space ( ) or period (.) comma (,) Number Example 12,345.67 12 345,67 12 345,67 or 12.345,67 12 345,67 12 345,67 or 12.345,67 12,345.67 Currency $12,345.67 12 345,67¢ 12 345,67¢ 12 345,67¢ ¢12.345,67 ¥12,345 Ordinal 1st 2nd 3rd … 1er 2e 3e … or 1re 2e 3e … … 1o 2o 3o … or 1a 2a 3a … 1o 2o 3o … or 1a 2a 3a … 1ͭ 2ͭ 3ͭ …

Slide 67

Slide 67 text

Japanese is multibyte string. US has multiple timezone. # are good at multibyte string " are good at time difference

Slide 68

Slide 68 text

Performance Performance turning is a part of localization.

Slide 69

Slide 69 text

The crowds in rush hours in Tokyo is crazy.

Slide 70

Slide 70 text

Japanese ticket gates have high throughput and high availability for that

Slide 71

Slide 71 text

Building something without considering the environment makes your product useless

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

https://speakerdeck.com/rejasupotaro/improving-ux-through-performance

Slide 74

Slide 74 text

Facebook is developing a lite version of Facebook app

Slide 75

Slide 75 text

Traffic Don’t miss your opportunity.

Slide 76

Slide 76 text

People gather and cook for Christmas party Christmas

Slide 77

Slide 77 text

Muslims abstain from all food and drink during the daylight hours Ramadan ?

Slide 78

Slide 78 text

Actually, traffic is increased doubled, tripled, … Why?

Slide 79

Slide 79 text

“Fasting” doesn’t mean they don’t have anything for a month. It is only in daylight hours. They cook and enjoy dinner after sunset.

Slide 80

Slide 80 text

Traffic from Arabic starts increasing 2 weeks before unlike Indonesia. Why? Arabic Indonesian

Slide 81

Slide 81 text

Our app has been featured on Google Play

Slide 82

Slide 82 text

Alarm apps get become popular during Ramadan. Why?

Slide 83

Slide 83 text

Prepare for Ramadan We can prepare in advance if we know their lifestyle

Slide 84

Slide 84 text

Translation Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion

Slide 85

Slide 85 text

name + “ added ” + number + “ person to his list” How many problems can you find?

Slide 86

Slide 86 text

How many problems can you find? MARY + “ added ” + 7 + “ person to his list” Should be “her” Plurals Number could be changed Female / Male Don’t concatenate string

Slide 87

Slide 87 text

Plurals Forms Use Android internationalization framework text_string English Polish 0 Apples Jablek 1 Apple Jablko 2..4 Apples Jablka 5..21 Apples Jablek 22..24 Apples Jablka 25..34 Apples Jablek

Slide 88

Slide 88 text

Choose “appropriate words” I know, but what is “appropriate word”?

Slide 89

Slide 89 text

http://imgur.com/gallery/Kk3JI

Slide 90

Slide 90 text

“Appropriate word” is changed by context Move to my library —— Oregon State —— Continue shopping OR = Oregon State, right…

Slide 91

Slide 91 text

The difference is obvious if you know the context

Slide 92

Slide 92 text

“Premium” could be offended “Premium” sounds like “Evil” in some countries

Slide 93

Slide 93 text

“Premium Service” • Cookpad Premium • Cookpad Prime • Cookpad Elite • Cookpad Deluxe • Cookpad Extra • Cookpad Select • Cookpad First Class • … “Premium” could give negative impression. But in Spanish, it’s a familiar word.

Slide 94

Slide 94 text

How to make it “appropriate”? Good workflow makes good translation

Slide 95

Slide 95 text

What do translators feel when they receive this phrase? %1$d replied to your photo of %2$d.

Slide 96

Slide 96 text

We are using placeholders to make phrases readable {sender_name} replied to your photo of {recipe_title}.

Slide 97

Slide 97 text

https://github.com/square/phrase - Phrase is an Android string resource templating library Phrase.from(context, R.string.reply_to_photo_comment) .put(“sender_name”, user.getName()) .put(“message_count”, messages.size()) .format();

Slide 98

Slide 98 text

Leave a comment when adding a new phrase {sender_name} replied to your photo of {recipe_title}.

Slide 99

Slide 99 text

It makes translation easier This message is displayed when a user receive a reply

Slide 100

Slide 100 text

Otherwise, Latin American people may think “Spanish is available but Latin American recipes are not available”. es-ES es-419

Slide 101

Slide 101 text

Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion Understanding users

Slide 102

Slide 102 text

Preferences vary with each individual “All German people drink beer everyday?”

Slide 103

Slide 103 text

“What is national character!?” “What is localization!?” “How to develop global services!?” I’m getting confused

Slide 104

Slide 104 text

“We never know what users want until we release the service”

Slide 105

Slide 105 text

We are repeating a cycle of Build - Measure - Learn to understand users Build - Measure - Learn

Slide 106

Slide 106 text

https://speakerdeck.com/rejasupotaro/collecting-logs-from-mobile-apps

Slide 107

Slide 107 text

Unified logging layer for mobile apps Puree guarantees that logs are sent correctly even if the device is not connected • Buffering • Filtering • Batching • Retrying • Pluggable

Slide 108

Slide 108 text

Conclusion Introduction > Real World Localizlation > Localization in Development > Translation > Understanding users > Conclusion

Slide 109

Slide 109 text

Requirement level Requirement level is not the same between services Quality Cost Requirement level (depends on service)

Slide 110

Slide 110 text

Localization is fun! I leaned a lot while locazing my app. Learning culture is fun!

Slide 111

Slide 111 text

Thank you! • Kentaro Takiguchi • GitHub: rejasupotaro • Twitter: @rejasupotaro Feel free to contact me