Many businesses are looking for growth outside the United States and Europe. To capture these new markets dedicated engineering effort will be required. This talk will provide tips for developing apps intended for an international audience.
This talk will cover:
- Process of translating app
- Supporting RTL for Arabic, Farsi, Hebrew, and Urdu speaking users
- Accepting payments in regions where credit card penetration is low - Performance on low end networks. Specifically covering Twitter’s move from PNG/JPEG to WebP.
The contents of this talk are derived from experiences at Twitter, interviews with app developers in MENA region, and Google Android guidelines.
4. Market size and
opportunity
Local pricing and
financial factors
Competitive
landscape
Identify target languages and locales
Localization Checklist — Google
5. Spending by Hispanic and Asian
households
US Chinese speakers (mainly
Cantonese and Mandarin)
US Spanish speakers
37.5 2.8 2.1TrillionMillionMillion
Language Use — US Census Bureau
Audience - United States
6. Largest economySmartphone penetration for users 18
to 32 years old
Population
205 82 8ThPercentMillion
Spring 2015 Global Attitudes survey — PEW Global
Audience - Brazil
World Fact Book — CIA
7. Move all strings into
strings.xml
Mark message parts
that should not be
translated
Provide sufficient
context for declared
strings
String localization
Localization Checklist — Google
14. Provide context for declared strings
• Is the meaning ambiguous?
• The word “demonstration” is a homonym.
• “A practical exhibition and explanation of
how something works.”
• “A public meeting or march protesting
against something.”
15. Provide context for declared strings
• Where is the string displayed?
• App launcher
• Action bar
• Hint text
• Section heading
• Button
16. Provide context for declared strings
• What are the layout constrains?
• Buttons are usually more space constrained
• Application name limited to 30 characters
• Text limited to single line
17. Mark parts that should not be
translated
• Strings that should not be localized
• Brand name like Twitter
• Certain proper names
• Placeholders
• Special Unicode characters 😊
• Urls
• Code
19. System provided formats - Date
Date
• Accepts Unicode date format pattern.
• Order is irrelevant. “MM/dd/yyyy” will return “dd.MM.yyyy” in Locale de_CH.
30. New APIs
• Android now provides a subset of the ICU4J
API.
• android.icu.lang.UCharacter
• android.icu.text.BreakIterator
• android.icu.text.DecimalFormat
• android.icu.util.Calendar
• android.icu.text.Bidi
• android.icu.text.DateFormat
• android.icu.text.RelativeDateTi
meFormatter
• By creating multiple APKs using product
flavors one could remove ICU files from 24+
APK.
32. Web content in ArabicPhones shipped with Android in
Middle East
Arabic Internet Users
160 80 0.8PercentPercentMillion
Number of Internet Users by Language — Internet World Stats
Audience - Arabic Speakers
Usage of content languages of websites — W3Techs
Middle East and Africa Smartphone Market — IDC
35. RTL Support
4.1
• Bi-directional support for TextView and
EditText elements.
4.2
• RTL layout mirroring.
• Improved fonts for international users.
4.3
• Improved Bi-directional support to
handle mixed direction text.
43. ViewPager
• No support for RTL
• Long standing request for support by
community
• https://code.google.com/p/android/
issues/detail?id=56831
• Other developers have created their
own solutions
• https://github.com/ksloginov/
RtlViewPager
46. Force RTL
• Easier to debug RTL layout issues
without switching to RTL language.
• Found under Settings -> Developer
Options -> Force RTL layout direction
47. RTL Support
Script types
• English and English-like (Latin, Greek,
and Cyrillic)
• Dense (Chinese, Japanese, and
Korean)
• Tall (South and Southeast Asian and
Middle Eastern languages)
Material Design
• English: Regular 14sp
• Dense: Regular 15sp
• Tall: Regular 15sp
Material Design — Google
49. Set up a test
environment
Review with native-
language speakers
Look for common
localization issues
Testing localization
Localization Checklist — Google
50. Common Issues
• Clipped text, or text that overlaps the
edge of UI elements or the screen
• Poor line wrapping
• Incorrect word breaks or punctuation
• Incorrect alphabetical sorting
• Incorrect layout direction or text
direction
• Untranslated text
51. Force RTL
• Easier to debug RTL layout issues
without switching to RTL language.
• Found under Settings -> Developer
Options -> Force RTL layout direction
53. Generate localized
screenshots of your
Android app
Upload screenshots,
metadata, and your
app to the Play Store
screengrab
supply
https://github.com/fastlane/fastlane/tree/master/screengrab
https://github.com/fastlane/fastlane/tree/master/supply
55. Paypal market share in Middle EastUnbankedCredit-card penetration
2 82 5PercentPercentPercent
PayPal, Others Still Bet on Middle East E-Commerce — WSJ
Audience - Middle East
56. Payment gateways
PayPal
• Available in all countries
• Limited penetration
• Usually linked to Credit Card or Bank Account
Stripe
• Not Available in Middle East
57. Payment gateways
Carrier billing
• Billed to wireless account
• Carrier charges a processing fee
• Typically only used for digital goods
Prepaid
• Popular for young adults and those without credit
• Value can be added at retail locations
• Usually a fee associated with adding value to card or processing payment
58. Payment gateways
TPay.me
• Direct carrier billing provider
• Charged to phone bill
Cash U
• Prepaid card accepted by online retailers
• Available in the Middle East and North Africa
• Users load cards at physical retail locations
• Commonly used for games and VOIP
60. Data used by 3G subscribers in
India per month
4G subscribers in IndiaWireless subscribers in India
300 1 800MBMillionMillion
Telecom Regulatory Authority of India — 30 June 2015
Audience - India
61. WebP
• Lossy and lossless image
compression developed by Google
• Open source, BSD licensed
• Native support on Android 4.0+
• 28% reduction in size compared to
PNGs re-compressed with pngcrush
and pngout
62. PJPEG
• Image is compressed in multiple
passes of progressively higher detail
• No transparency support
• No native support on Android
63. Fresco
• Image loading and display library from
Facebook
• Support for PJPEG out of the box
• No feature gaps
• Caching
• Progress bars
• Scaling
• Resize and rotation
• Rounded corners and circles
64. Results
• Images were 25% smaller compared
to PNG or JPEG images
• 9% decrease in p50 load times
• 74% decrease in failures
• Increased user engagement,
especially in emerging markets
3,000 images per second — Henna Kerman/Twitter
65. User Empathy
2G Day
• Throttled all employee accounts
• iOS and Android only
• Didn’t simulate network error rates
Cost Notification
• Currently iOS only
• Provides employee with region
specific costs for network usage
69. RTL
• https://www.youtube.com/watch?v=4dJHtT4-vBE (From Right to Left and Back)
• https://material.google.com/
• https://www.idc.com/getdoc.jsp?containerId=prAE25737515
• http://mpcabd.xyz/python-arabic-text-reshaper/
Images
• http://android-developers.blogspot.com/
References