J'ai ce code C # par exemple maintenant le thread actuel charge la culture arabe. Donc le résultat est comme celui-ci p> mais je ne veux pas que "2010" et le "19" soit en anglais (également appelé latin ou Arabe de l'Ouest chiffres) - Je veux des nombres d'arabe est comme "ù ¢". P> P> P> P> P> P> J'ai essayé p> donné le même résultat.
Donc toute idée? P> p>
7 Réponses :
Nous utilisons des chiffres arabes en anglais. En tant que tel, ce que vous voyez est le comportement correct - et uniquement possible. P>
Les chiffres anglais sont appelés arabe, mais les Arabes les représentent différemment comme tels 0-9: 0123456789
En tant que test rapide, j'ai écrit ceci pour répertorier toutes les mignonnes qui n'ont pas "2010" dans l'année: Les résultats sont les suivants: p> ar-SA : ربÙع اÙØ£ÙÙ 05, 1431
dv-MV : ربÙع اÙØ£ÙÙ 06, 1431
prs-AF : ربÙع اÙØ£ÙÙ 06, 1431
ps-AF : ربÙع اÙØ£ÙÙ 06, 1431
th-TH : à¸à¸¸à¸¡à¸ าà¸à¸±à¸à¸à¹ 19, 2553
Ta cette solution de contournement (listez simplement toutes les cultures que vous souhaitez utiliser ces chiffres dans le tableau de chaînes):
DateTime.Now.ToString().ConvertNumerals();
L'article Wikipedia que vous avez lié à indiquer que les chiffres arabes standard sont utilisés dans le monde arabe et que les chiffres arabes orientaux que vous faites référence ne sont utilisés que dans quelques nations spécifiques.
La seule solution consiste à convertir manuellement les chiffres. p>
Vous pouvez utiliser le tableau CODE> CURRENCULTUNT.NOMBERFORDIGITUGITS CODE> Au lieu d'apporter explicitement les caractères Unicode pour prendre en charge toute autre langue en plus des chiffres de l'arabe-INDITION, mais en ce qui concerne le soutien de la culture. Catégories conscientes telles que DateTime Code> Cela semble sans écran ou quelque chose. P>
Essayez ceci:
public static string ToIndicDigits(this string input) { return input.Replace('0', '\u0660') .Replace('1', '\u0661') .Replace('2', '\u0662') .Replace('3', '\u0663') .Replace('4', '\u0664') .Replace('5', '\u0665') .Replace('6', '\u0666') .Replace('7', '\u0667') .Replace('8', '\u0668') .Replace('9', '\u0669'); } }
Vous pouvez utiliser le Windows. Globalisation.numberformatting.numeralsystemTranslator classe à traduire entre le latin et l'un des systèmes de numéros pris en charge. Pour traduire en arabe, définissez la propriété Alternativement, vous pouvez simplement utiliser Windows .Globalization.dateTimeformatting.dateTimeformatting classe directement. P> numeralsystem code> sur
"arabe" code>, vous pouvez appeler la méthode
translatenileaux code>. P>
J'ai pris l'approche / la solution de contournement @Marcel B, car je suis confronté au même problème que la question initiale des États.
Dans mon cas, c'est pour la culture "AR-KW". La seule différence em> est que j'utilise le vous peut vérifier cela comme ceci (basé sur votre scénario de fil actuel): p> Donc, le code ressemblera à ceci: p> private static class ArabicNumeralHelper
{
public static string ConvertNumerals(this string input)
{
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
if (new string[] { "ar-lb", "ar-SA" }
.Contains(cultureInfo.Name))
{
return input.Replace('0', cultureInfo.NumberFormat.NativeDigits[0])
.Replace('1', cultureInfo.NumberFormat.NativeDigits[1])
.Replace('2', cultureInfo.NumberFormat.NativeDigits[2])
.Replace('3', cultureInfo.NumberFormat.NativeDigits[3])
.Replace('4', cultureInfo.NumberFormat.NativeDigits[4])
.Replace('5', cultureInfo.NumberFormat.NativeDigits[5])
.Replace('6', cultureInfo.NumberFormat.NativeDigits[6])
.Replace('7', cultureInfo.NumberFormat.NativeDigits[7])
.Replace('8', cultureInfo.NumberFormat.NativeDigits[8])
.Replace('9', cultureInfo.NumberFormat.NativeDigits[9]);
}
else return input;
}
}
Que vous attendez-vous à arriver? en.wikipedia.org/wiki/arabic_digits