经过进一步的研究,我找到了一位 Microsoft 员工的答案,指出他们不翻译数字,尽管完全可以使用 NativeDigits 属性提供的特定区域性的数字数组自行翻译(请参阅http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.nativedigits.aspx http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.nativedigits.aspx).
要查明以表单提交的文本是阿拉伯语还是拉丁语,我现在正在执行以下操作:
public bool IsContentArabic(string content)
{
string pattern = @"\p{IsArabic}";
return Regex.IsMatch(
content,
pattern,
RegexOptions.RightToLeft | RegexOptions.IgnoreCase | RegexOptions.Multiline);
}
public bool IsContentLatin1(string content)
{
string pattern = @"\p{IsBasicLatin}";
return Regex.IsMatch(
content,
pattern,
RegexOptions.IgnoreCase | RegexOptions.Multiline);
}
为了将波斯数字转换为“拉丁”数字,我编写了这个助手:
public static class NumberHelper
{
private static readonly CultureInfo arabic = new CultureInfo("fa-IR");
private static readonly CultureInfo latin = new CultureInfo("en-US");
public static string ToArabic(string input)
{
var arabicDigits = arabic.NumberFormat.NativeDigits;
for (int i = 0; i < arabicDigits.Length; i++)
{
input = input.Replace(i.ToString(), arabicDigits[i]);
}
return input;
}
public static string ToLatin(string input)
{
var latinDigits = latin.NumberFormat.NativeDigits;
var arabicDigits = arabic.NumberFormat.NativeDigits;
for (int i = 0; i < latinDigits.Length; i++)
{
input = input.Replace(arabicDigits[i], latinDigits[i]);
}
return input;
}
}
我还在模型绑定发生之前就开始关注,并将表单中的纯数字输入转换为拉丁数字(如果适用)。
Ako,对于什么方向,我们设法使用网页 html 标签上的“dir”属性(dir => 方向)解决了很多问题。像这样:
<html dir="rtl">
“dir”属性采用“rtl”(从右到左)或“ltr”(从左到右)。
希望这对某人有帮助!