Internationalizing your Android Application

Internationalizing your Android Application

How MeetMe went international on Android. Presented in 2012 to Android Alliance Philadelphia: http://www.meetup.com/AndroidAlliancePhilly/events/84300832/

98df39819d64b9533260e8f67790f7f4?s=128

Dallas Gutauckis

November 28, 2012
Tweet

Transcript

  1. None
  2. How  MeetMe  went  i18n  (on  Android)   Dallas  Gutauckis  

    @DallasGutauckis   Dallas@Gutauckis.com   DallasGutauckis.com   github.com/DallasGutauckis    
  3. DALLAS  GUTAUCKIS  

  4. Dallas  Gutauckis  (me)   §  Sr.  Architect  @  MeetMe  

    §  Amateur  photographer  and   designer   §  Programmer,  Developer,   Engineer,  Architect,  ScienFst  
  5. Why  interna=onalize?   §  MeetMe  sees  internaFonalizing  as  mutually  beneficial

      –  Users  get  a  beKer  experience  with  naFve  language  support   –  Large  potenFal  market  outside  of  English-­‐speaking  market  
  6. CONTEXT   (before  and  aHer)  

  7. Before   AHer  

  8. Stringify  early,  stringify  oHen   §  Use  strings  liberally  

      <string name=“introduction”>Hello, World!</string>
  9. Pluralize!   §  Got  a  string  that  has  a  variable

     number  in  it?  Use  plurals!   <plurals name=”introduction"> <item quantity="one">Hello, one world!</item> <item quantity="other">Hello, %d worlds!</item> </plurals>
  10. Strings   §  Use  ‘em  how  they’re  designed  to  be

     used  (and  more)   –  Strings   –  Plurals   –  Arrays   –  (more)  Gender-­‐focused  OR  gender-­‐neutral  strings   §  First  thing  we  had  to  reconcile  out  of  the  gate   §  We  started  with  ~850  pre-­‐exisFng  strings  entries  (we  were  lucky  to   have  had  the  foresight  to  do  this  much)   §  Ended  with  ~910  
  11. Yeah…  

  12. Transla=ng   §  IniFal  translaFons   –  Machine  translate!  

    –  Prove  it  out.  Test  it.  
  13. Addressing  layout  issues   §  Designed  to  fit   – 

    Determine  ways  to  abbreviate.  Brevity  will  typically   benefit  you  anyway.    
  14. Addressing  layout  issues   §  Designed  to  flex   – 

    Update  the  layout  to  resolve  any  hard-­‐coded   dimensions  and  be  more  flexible   o  ScrollView  is  your  friend   o  HorizontalScrollView  too   o  AutoResizeTextView  (online)  
  15. Localizing   §  Dates   –  Calendar,  Date   – 

    DateUFls   §  Numbers   –  NumberFormat   o  Decimals   o  Grouping  (thousands)   o  Currency   o  Etc   §  Distances  
  16. On  depending  on  APIs   §  Success/error  messages   – 

    Whoops   –  Error  types  and  codes  corresponding  to  specific  errors   o  Invalid  credenFals?  AuthExcepFon#0x01   §  Huge  and/or  variable  lists  of  anything   –  Region  names   –  Random  quesFons  
  17. Human  Transla=ons   §  NaFve  speaker  translaFons  (outsourced)   § 

    NaFve  speaker  reviews  (in-­‐house)/QA  review   §  Iterate   §  In-­‐house  reviews   §  Release  
  18. Keeping  sane   §  TranslaFon  management  can  be  a  lot

     of  work.  Automate.   §  Ongoing  development  includes  automated  translaFon  process   –  Keeps  developers  from  having  to  deal  with  logisFcs  of  translaFon  management  
  19. THINGS  YOU  SHOULD   BE  AWARE  OF…  

  20. 1.  EVERYTHING  

  21. Be  pessimis=c   §  Don’t  assume  you  understand  internaFonalizaFon  

    §  Quotes   §  Ellipses   §  Wikipedia  is  your  friend!  
  22. What  are  the  best  devices  to  confirm  with?   § 

    Nexus  One   §  Nexus  S   §  Galaxy  Nexus   §  Nexus  7   §  Nexus  4  
  23. FIN  

  24. None
  25. Q&A   Dallas  Gutauckis   @DallasGutauckis   Dallas@Gutauckis.com   DallasGutauckis.com

      github.com/DallasGutauckis