1 - Add android:supportsRtl="true" to tag in tiapp.xml
<androidxmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<applicationandroid:supportsRtl="true" />
</manifest>
</android>2 - Use if in .tss file to switch RTL & LTR
// alloy.jsAlloy.Globals.isRTL=Ti.App.Properties.hasProperty('language') ? true : false;'#exampleLabel': {
color: ‘red'}'#exampleLabel[if=Alloy.Globals.isRTL]' : { right: 5}'#exampleLabel[if=!Alloy.Globals.isRTL]' : {
left: 5
}3 - add toggle button to change between languages then reopen the index to see the changes
//index.jsvarbutton=Ti.UI.createButton({title: "Change Language"});button.addEventListener("click",function(){if(Ti.Locale.currentLanguage=='ar'){Ti.Locale.setLanguage('en');Ti.App.Properties.removeProperty('language');Alloy.Globals.isRTL=false;}else{Ti.Locale.setLanguage('ar');Ti.App.Properties.setString('language','ar');Alloy.Globals.isRTL=true;}Alloy.createController("index").getView().open();});4 - Set iOS 9+ is minimum in tiapp.xml
<?xml version="1.0" encoding="UTF-8"?>
<ti:appxmlns:ti="http://ti.appcelerator.org">
<ios>
<min-ios-ver>9.0</min-ios-ver>
</ios>
</ti:app>5 - Set Android 4.2 as minimum
<?xml version="1.0" encoding="UTF-8"?>
<ti:appxmlns:ti="http://ti.appcelerator.org">
<androidxmlns:android="http://schemas.android.com/apk/res/android">
<manifestandroid:versionCode="17">
<uses-sdkandroid:minSdkVersion="17"/>
</manifest>
</android>
</ti:app>- LeftNavButton & RightNavButton
- Default ListView/TableView templates
- Window open transition come from right with RTL and left with LTR
- CollectionView list items from top right with RTL and top left with LTR
- ActionBar and menus items flip RTL/LTR with zero code
- Drawer layout come from right instead of left
- linearlayout (horizontal/vertical layout) will not flip, Titanium calculate positions manually, same with autolayout in iOS. ref
- Natural direction for the text supported nativly in both iOS and Android, while Titanium has only right, left and center allignment. AndroidiOS
- Titanium has no API to change local, but we can use this module
- Titanium has an issue to re-open the hole UI stack on iOS, so change loal will load strings from the new selected file but will not wich RTL/LTR till you close the app and open it again.