¿Cómo uso DateTime. TryParse () para idiomas que no son inglés como el árabe?

Necesito convertir cadenas en objetos DateTime que están en idiomas que no están en inglés. He visto muchos ejemplos de conversión de DateTime a cadenas en otros idiomas, pero no al revés.

Esto no parece funcionar:

CultureInfo provider = new CultureInfo("ar-AE");    // Arabic - United Arab Emirates

string sample = "الاربعاء 16 مارس 2011"; // Arabic date in Gregorian calendar
DateTime result;
DateTime expected = new DateTime(2011, 3, 16);   // the expected date
bool b;

b = DateTime.TryParse(sample, provider, DateTimeStyles.None, out result);

Assert.IsTrue(b);
Assert.AreEqual(expected, result);

Adicionalmente, necesito manejar cadenas que están en otros calendarios. Esto es lo que probé y tampoco parece funcionar.

CultureInfo provider = new CultureInfo("ar-AE");    // Arabic - United Arab Emirates
provider.DateTimeFormat.Calendar = new System.Globalization.HijriCalendar();
// Wednesday, March 16, 2011, 11 Rabi second in 1432
string sample = " ‏11 ربيع ثاني 1432 ";
DateTime result;
DateTime expected = new DateTime(2011, 3, 16);   // ?
bool b;

b = DateTime.TryParse(sample, provider, DateTimeStyles.None, out result);

Assert.IsTrue(b);
Assert.AreEqual(expected, result);

¿Qué me estoy perdiendo

Respuestas a la pregunta(3)

Su respuesta a la pregunta