نحوه فارسی سازی اعداد در کل سایت با استفاده از فونت و کتابخانه Javascript

نحوه فارسی سازی اعداد در کل سایت با استفاده از فونت و کتابخانه Javascript

نمایش اعداد به صورت فارسی در کل سایت:
شاید بخواهید در وبسایتتان اعداد به جای نمایش انگلیسی (1,2,3) به صورت فارسی (۱,۲,۳) نمایش داده شوند.
برای حل این مشکل هم باید تغییراتی در Css و هم تغییراتی در خود کاراکتر های عددی ایجاد کنید

1- یک فونت فارسی (مثل IRANSans) را باید توسط font-face به CSS داستان خود اضافه کنید که اگر روی کامپیوتر یا گوشی کاربر نبود درست دیده شود

@font-face {
 font-family: IRANSans;
 font-style: normal;
 src: url('../fonts/IRANSans/IRANSans.eot');

نکته : سایر فونت های B و IR فونت های مخصوص نوشتاری هستند و برای وب مشکلاتی دارند و بهتر است از فونت های بهینه شده برای وب استفاده کنید
مانند : BBCNassim, IRANSans, ArabicNaskh و یا فونت های اصلاح شده Titr, Yekan, Trafic و …

2- همانطور که میدانید کد اسکی (ASCII) اعداد انگلیسی با فارسی متفاوت است
برای تغییر کارکتر اعداد انگلیسی به فارسی به طور کلی 2 راه وجود دارد.
الف – تغییر در سمت سرور و به هنگام رندر شدن صفحه
ب – تغییر در سمت کلاینت توسط جاواسکریپت

کتابخانه جاواسکریپتی کار سمت کلاینت آن را انجام می دهد
https://github.com/Maghrooni/persianNumbers
مثال : خروجی متد persianNumbers همیشه اعداد با کاراکتر ها فارسی را نمایش میدهد

 $.persianNumbers("این متن شامل اعداد1234 فارسی می باشد 12344")

ولی هدف ما در اینجا تغییر اعداد انگیسی به معادل فارسی آن در سمت سرور است برای Asp.net mvc
برای این کار نیز روش های مختلفی وجود دارد که 2 مورد از آنها را آورده ام

1- کتابخانه En2FaConvertor.cs را از این لینک دانلود و به پروژه خود اضافه کنید
این کلاس یک ActionFiter است و وظیفه آن تبدیل اعداد به فارسی در زمان Exectue شدن اکشن (در متد OnResultExecuted) می باشد.
نکته : فراموش نکنید که این Filter را به صورت سراسری در متد Application_Start اضافه کنید تا در کل پروژه برای همه اکشن ها اعمال شود
2- کتابخانه En2FaViewResult.cs را از این لینک دانلود و به پروژه خود اضافه کنید
این کلاس یک ViewResult (نوعی از ActionResult) می باشد که وظیفه آن نیز تبدیل اعداد به فارسی به هنگان رند شدن View می باشد
نکته : برای استفاده از آن فقط کافیست نوع خروجی اکشن خود را En2FaViewResult قرار دهید.
مقاله زیر توانسته با استفاده از همین روش در ActionFilter ها، کلمات کلیدی دلخواه خود را رد صفحه Highlight کند.
به عنوان مثال از این روش میتوانید برای Highlight کردن کلمه سرچ شده به هنگام نمایش نتایج جستجو به کاربر استفاده کنید.

http://goo.gl/Q2ySaM

2 دیدگاه

  1. به خوردن صفحه به خاطر این هستش که تمام اعداد از جمله مقادیر پارامترهای استایل صفحه را هم فارسی میکند که قابل تفسیر برای وبسایت نیست. کدها همگی باید اصلاح شوند. من تغییراتی دادم بهتر شده اند. متد اصلی کلاس باید اصلاح شود به صورت زیر:
    public string En2Fa(string str)
    {
    Regex regex = new Regex(“>(.|\n)*? 0)
    {
    foreach (Match match in matches)
    {
    if (match.ToString().Trim().Length > 2)
    {
    str = str.Replace(match.ToString(),
    match.ToString().Replace(“0”, “۰”)
    .Replace(“1”, “۱”)
    .Replace(“2”, “۲”)
    .Replace(“3”, “۳”)
    .Replace(“4”, “۴”)
    .Replace(“5”, “۵”)
    .Replace(“6”, “۶”)
    .Replace(“7”, “۷”)
    .Replace(“8”, “۸”)
    .Replace(“9”, “۹”));
    }
    }
    }
    else
    {
    str = str.Replace(“0”, “۰”)
    .Replace(“1”, “۱”)
    .Replace(“2”, “۲”)
    .Replace(“3”, “۳”)
    .Replace(“4”, “۴”)
    .Replace(“5”, “۵”)
    .Replace(“6”, “۶”)
    .Replace(“7”, “۷”)
    .Replace(“8”, “۸”)
    .Replace(“9”, “۹”);
    }
    return str;

    //return str.Replace(“0”, “۰”)
    // .Replace(“1”, “۱”)
    // .Replace(“2”, “۲”)
    // .Replace(“3”, “۳”)
    // .Replace(“4”, “۴”)
    // .Replace(“5”, “۵”)
    // .Replace(“6”, “۶”)
    // .Replace(“7”, “۷”)
    // .Replace(“8”, “۸”)
    // .Replace(“9”, “۹”);
    }

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

8 + 3 =