Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Successful Locali(z)(s)ation - Droidcon Berlin 2016

Successful Locali(z)(s)ation - Droidcon Berlin 2016

rejasupotaro

June 16, 2016
Tweet

More Decks by rejasupotaro

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. Why Go Global
    Should we really do it?

    View Slide

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

    View Slide

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

    View Slide

  10. Can you find Japan?

    View Slide

  11. That’s it.

    View Slide

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

    View Slide

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

    View Slide

  14. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. Have you ever played this game?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. 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

    View Slide

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

    View Slide

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

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. Asian people put information into small space

    View Slide

  29. It encourage consumer purchasing sentiment for people living in there

    View Slide

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

    View Slide

  31. The preference depends on what they have had before now

    View Slide

  32. McDonald’s in india has numerous vegetarian options

    View Slide

  33. Pay attention what people feel

    View Slide

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

    View Slide

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

    View Slide

  36. 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

    View Slide

  37. There are various writing systems in the world we are living

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. Word Order

    " = [Subject] [Verb] [Object]

    # = [Subject] [Object] [Verb]

    ) = [Verb] [Subject] [Object]
    What’s the impact of this difference?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  57. 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
    • …
    android:supportsRtl=“true”

    >

    View Slide

  58. Some components need to be flipped by hand
    FloatingActionButton
    ViewPager

    View Slide

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

    View Slide

  60. View Slide

  61. Sometimes we need to add locale specific images like this
    Flipped

    View Slide

  62. 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()

    View Slide

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

    View Slide

  64. 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

    View Slide

  65. 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

    View Slide

  66. 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ͭ …

    View Slide

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

    View Slide

  68. Performance
    Performance turning is a part of localization.

    View Slide

  69. The crowds in rush hours in Tokyo is crazy.

    View Slide

  70. Japanese ticket gates have high throughput and high availability for that

    View Slide

  71. Building something without considering the environment makes your product useless

    View Slide

  72. View Slide

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

    View Slide

  74. Facebook is developing a lite version of Facebook app

    View Slide

  75. Traffic
    Don’t miss your opportunity.

    View Slide

  76. People gather and cook for Christmas party
    Christmas

    View Slide

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

    View Slide

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

    View Slide

  79. “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.

    View Slide

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

    View Slide

  81. Our app has been featured on Google Play

    View Slide

  82. Alarm apps get become popular during Ramadan. Why?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  86. 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

    View Slide

  87. Plurals Forms
    Use Android internationalization framework


    name="plural_name">
    quantity=["zero" | "one" | "two" | "few" | "many" | "other"]
    >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

    View Slide

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

    View Slide

  89. http://imgur.com/gallery/Kk3JI

    View Slide

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

    View Slide

  91. The difference is obvious if you know the context

    View Slide

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

    View Slide

  93. “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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  97. 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();

    View Slide

  98. Leave a comment when adding a new phrase


    {sender_name} replied to your photo of {recipe_title}.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  107. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide