Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS...

35
Bidi on Android and iOS Craig Cummings January 12, 2015 © 2015 Craig R. Cummings

Transcript of Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS...

Page 1: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Bidi on Android and iOS

Craig Cummings January 12, 2015

© 2015 Craig R. Cummings

Page 2: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Agenda

• Market background • A Word or Two on Bidi • Going Native - Android - iOS

• Demos • Q & A

© 2015 Craig R. Cummings

Page 3: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

What is bidi?

• Short for bidirectional -- where text and user interfaces can flow in two directions

• But in memory it looks like:

© 2015 Craig R. Cummings

Page 4: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Arab Market by OS

Source: http://www.wamda.com/2013/04/how-consumers-mobile-market-in-the-arab-world-infographic © 2015 Craig R. Cummings

Page 5: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Smartphone Market Penetration

Source: http://think.withgoogle.com/mobileplanet/en/ © 2015 Craig R. Cummings

Page 6: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

More words on bidirectionalization

• How do you bidirectionalize? - Flip everything - Handle exceptions

• Text • LTR text of other scripts, numbers, tashkeel, phone

numbers, and more • UI

• Shadows, charts, play buttons, and more

© 2015 Craig R. Cummings

Page 7: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Native Mobile Apps

© 2015 Craig R. Cummings

Page 8: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Android Bidirectionalization Start

© 2015 Craig R. Cummings

Page 9: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Android Bidirectionalization Steps (just a single step?)

© 2015 Craig R. Cummings

Page 10: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Simple

© 2015 Craig R. Cummings

Page 11: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Additional Steps (if needed)?

© 2015 Craig R. Cummings

Page 12: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Android Text Field Direction Control

© 2015 Craig R. Cummings

Page 13: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Android RTL Previewer

© 2015 Craig R. Cummings

Page 14: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

More Android Tips and Tricks

© 2015 Craig R. Cummings

Page 15: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Add RTL Dialog

© 2015 Craig R. Cummings

Page 16: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Bidirectionalization Start

© 2015 Craig R. Cummings

Page 17: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Bidirectionalization Steps

•  Support right-to-left languages by using base internationalization and Auto Layout, as described in Internationalizing the User Interface. -  In general, if the development language is left-to-right,

align the views starting in the upper-left corner and add constraints that expand views to the bottom-right. When you use the Auto Layout leading and trailing attributes (not the right and left attributes), most of the user interface appears mirrored in right-to-left languages.

© 2015 Craig R. Cummings

Page 18: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

As Simple

© 2015 Craig R. Cummings

Page 19: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Tips, and Tricks

© 2015 Craig R. Cummings

Page 20: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Run with Explicit App Language

© 2015 Craig R. Cummings

Page 21: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Set Application to Arabic, Hebrew, etc.

© 2015 Craig R. Cummings

Page 22: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Xcode Cool, New Bidi Features

© 2015 Craig R. Cummings

Page 23: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

© 2015 Craig R. Cummings

Page 24: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Text Field Direction Control (and the art of handling exceptions)

© 2015 Craig R. Cummings

Page 25: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Natural Alignment with English

© 2015 Craig R. Cummings

Page 26: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Natural Aligment with Arabic

© 2015 Craig R. Cummings

Page 27: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Alignment Declarative via Interface Builder

© 2015 Craig R. Cummings

Page 28: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Android Demo

© 2015 Craig R. Cummings

Page 29: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

iOS Demo

© 2015 Craig R. Cummings

Page 30: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

YNet Hebrew

© 2015 Craig R. Cummings

Page 31: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

YNet Hebrew Drill Down

© 2015 Craig R. Cummings

Page 32: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

BBC Arabic

© 2015 Craig R. Cummings

Page 33: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

BBC Arabic Drill Down

© 2015 Craig R. Cummings

Page 34: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Report Bugs

• Android - http://code.google.com/p/android/issues/list

•  iOS - https://developer.apple.com/bug-reporting/

© 2015 Craig R. Cummings

Page 35: Bidi on Android and iOS - Meetupfiles.meetup.com/3154762/Bidi on Android and iOS.pdf · iOS Bidirectionalization Steps • Support right-to-left languages by using base internationalization

Q & A

[email protected]

© 2015 Craig R. Cummings