Force? Wrong word, I would say. You just need to output what you want.
The problem you have is: all (is I'm not much mistaken) Arabic cultures and Urdu cultures use… "Arabic numerals" ("Indo-Arabic"), which are ironically… Western European 1234567890.
What you show is not directly supported by these cultures. Your are showing something more traditional which is sometimes called "Eastern Arabic numerals" which also have separate Urdu variant:
http://en.wikipedia.org/wiki/Arabic_numerals[
^],
http://en.wikipedia.org/wiki/Eastern_Arabic_numerals[
^].
So, what happened if you use appropriate culture codes. Nothing special. For example, for "Urdu (Islamic Respublic of Pakistan", "اُردو (پاکستان)", or "Arabic (Syria)", "العربية (سوريا)", you can have:
using System.Globalization;
CultureInfo culture = new CultureInfo("ur-PK");
string result = 123.ToString(culture);
culture = new CultureInfo("ar-SY");
result = 123.ToString(culture);
As expected, no luck. I would expect the same from all other cultures using Perso-Arabic or Urdu.
So, you need your own solution, which is quite easy. Look at this code sample:
http://www.wenda.io/questions/637582/converting-numbers-from-western-arabic-digits-1-2-3-to-eastern-arabic-digit.html[
^].
I hope you got the idea. All you need it to look up for "01…" location in Unicode tables. The order is the same, so the conversion is a simple shift. Please see:
http://unicode.org/charts/PDF/U0600.pdf[
^], look at "Arabic-Indic digit zero", u0660.
With Urdu, the situation is different. "The Urdu numerals are currently assigned to the same locations as Farsi numerals":
http://www.unicode.org/L2/L2000/00134-urdu-num.htm[
^].
So, the code would be the same, and the strings will be the same. If you want to present those numerals differently, you will need to have slightly different fonts for Arab and Urdu.
—SA