PDA

View Full Version : مرجع کامل نمایش اعداد وب سایت با فونت فارسی



majid_darab
یک شنبه 02 اسفند 1388, 14:42 عصر
با سلام و عرض خسته نباشید :
برای شروع ابتدا بی زحمت به تاپیک زیر که تاریخش مربوط به یک سال گذشته است سری بزنید...
http://barnamenevis.org/forum/showthread.php?t=138055&highlight=%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF+%D9%81%D8 %A7%D8%B1%D8%B3%D9%8A

خوب بعد از خوندن این تاپیک متدی که آقای راد گذاشته بودند بسیار جالب به نظررسید.
باوجود اینکه یک سالی از اون می گذره ، بعضی از قسمتاش کاملاً برام جدید بود.

اما بزارین بحثو از اینجا شروع کنم که وقتی تاریخ زمان حالو در یک لیبل نشان می دهم ، اعداد مربوطه با فونت انگلیسی در فایر فاکس و فونت فارسی در 8 ie نشان داده می شوند و این در حالی است که من پس از نصب ویندوز تغییری در Digit substitution واقع در Regional And Language Options اعمال نکردم.
خوب ظاهراً تو ie این موضوع ok است ، اما چرا تو فایر فاکس با فونت انگلیسی است؟
ذکر این نکته رو ضروری می دانم که من تا اونجا که ممکنه نمی خوام کاربرای وب سایتمو مجبور به اعمال تغییراتی در ویندوزشون بکنم و همین طور در مورد browser هاشون...
برای همین هم تو سیستم خودم Digit substitution رو تغییر نمی دهم تا حالت default رو داشته باشد.
این سوالو برا این پرسیدم چون در برخی از وب سایت ها با تعجب می بینم که اعداد مربوط به تاریخ در بالای آنها در فایرفاکس من هم با فونت فارسی است (بدون تغییر در سیستمم یا فایرفاکس)(لیبل بودندظاهراً نه عکس)
یا حتی در وب سایت های دیگری اعداد نمایش داده شده نیز در فایرفاکس من با فونت فارسی است (بدون تغییر در سیستمم یا فایرفاکس)
حال سوال اینجاست که این وب سایت ها از روشی همچون متد اعلامی آقای راد استفاده می کنند ویا روش دیگری برای این کار وجود دارد؟

باتوجه به اینکه متد آقای راد و روش اعلامی مربوط به یک سال پیش است آیا برای فارسی نشان دادن اعداد در خود vs2008 تنظیم خاصی وجود ندارد که جنس عددو دگرگون نکند؟
فرض کنید مادروب سایت خود بخشی مخصوص اخبار داریم که می خوایم اعداد داخل اون با فونت فارسی نشون داده بشن ...
آیا این روش درستی است که متن اخبارو با متد اعلامی فیلتر و بعد مورد استفاده قرار بدیم.
درضمن با انجام این کار نیز امکان انجام محاسبات ریاضی روی اعداد از بین می رود که ما اینو زیاد نمی پسندیم.
خوب من جسارتاً در متد آقای راد تغییراتی دادم که فقط مخصوص دریافت اعداد نباشه و از این ور رشته تحویل بگیره از اون ور رشته رو با اعداد فارسی شده تحویل بده...
اما متد به قرار زیر شد :

public string ConvertToPersianNumber(string str)
{
string strWithoutSpaces = str.Trim();

//bool m = Array.TrueForAll<char>(number.ToCharArray(), s => char.IsDigit(s));
char[] temp = new char[strWithoutSpaces.Length];
//if (m)
//{
int i = 0;
Array.ForEach<char>(strWithoutSpaces.ToCharArray(), b =>
{
if (char.IsDigit(b))
{
temp[i] = (char)(((int)b + 1728));
i += 1;
}
else
{
temp[i] = b;
i += 1;
}
}
);

string strWithPersianNumbers = new string(temp);
return strWithPersianNumbers;
//}
// else
// {
// return null;
// }
}خوب ظاهراً درمورد نمایش تاریخ تمام فارسی مشکلم حل شده است ...
ازاین ور تاریخ شمسی بهش میدی از اون ور تاریخ مزبورو با اعداد فارسی تحویل می گیری.
اما اگر می شد روشی باشه که عددو دچار دگرگونی نکنه و جامعیت نیز داشته باشه بسیار عالی می شد.
اگر راهنمایی بفرمایید ممنون می شوم.

با تشکر