I got several questions about how to know if the locale\culture is right to left. Arabic is not the only RTL language, there is Farsi, Urdu, Dari, some Chinese and Indian scripts, to name some. There are several techniques but after many trials these are my best picks.
In managed code there is a property TextInfo.IsRightToLeft that indicates the direction of each culture. This is a simple C# code snippet to detect if the culture is RightToLeft.
static bool IslanguageRTL()
In unmanaged code, you need to dig deeper in the locale structure to see if it RTL or not. This is a simple C++ code snippet:
bool IsLanguageRTL( void )
(sizeof(localesig)/sizeof(wchar_t))) && (localesig.lsUsb&0x08000000))
I hope this helps!