امیرحسین مرجانی

اصلاح تاریخ شمسی در گرید های ناپ‌کامرس

برای مشاهده آموزش اصلاح DatetimePicker  تاریخ شمسی کلیک کنید

اگر به دنبال پروژه های متن باز و راه اندازی فروشگاه اینترنتی بوده اید، حتما با حال اسم NopCommerce  به گوش شما خورده است، پروژه بی نظیری که تصمیم دارم از این به بعد بیشتر در موردش صحبت کنم و بنویسم. آشنایی من با این پروژه بر می گرده به حدود شش سال پیش [پروژه مترجم فایل های ناپ‌کامرس]، آن زمان که نسخه 3.9 منتشر شده بود، آن زمان به درخواست یکی از عزیزان به دنبال راه اندازی فروشگاه اینترنتی با قابلیت پذیریش بیت کوین بودم. کار جدی من با نسخه 4.2 برای سایت آروان چوب، نسخه 4.3 برای فروشگاه اینترنتی طب تیک، و نسخه 4.4 برای فروشگاه دنسیس بوده است.

یکی از دغدغه هایی که در پروژه های متن سازی بین المللی وجود دارد، بومی سازی پروژه های برای مصرف داخل هست، پروژه ناپ‌کامرس به خوبی از چند زبانگی (multi languages) و چند محلی (multicultural) پشتیبانی می کند و برای استفاده در محیط فارسی و شمسی نیاز به تغییر زیادی ندارد، و اکثر تغییرات به صورت خودکار اعمال می شود.

برای نمایش صحیح تاریخ شمسی در گرید های ناپ کامرس لازم هست یک تغییر جزیی اعمال شود.

همانطور که می دانید پروژه ناپ‌کامرس برای نمایش گریدها از کتابخانه قدرتمند datatables  استفاده می کند، همچنین برای نمایش تاریخ و پیشتیبانی از چندمحلی از کتابخانه moment  استفاده می کند، و به همین دلیل تغییرات بسیار ساده اعمال می شود.

تمامی گرید های ناپ کامرس توسط یک Partial View  به نام Table  ساخته می شود، این به این معنی هست که با یک بار تغییر می توان این مسئله را در کل پروژه اصلاح کرد. در ویو Table  یک Partial  دیگر وجود به نام _Table.Definition.cshtml دارد که ساختار گرید را مشخص می کند.

در صورتی که تنظیمات سرور به درستی انجام شده باشد، مشخصات کالچر به صورت صحیح در این خط تنظیم می شود.

    //the locale which MomentJS should use
    var locale = CultureInfo.CurrentCulture.Name;

در نسخه های قبلی نیاز بود که این مقدار به صورت دستی به شکل زیر تغییر کند.

    //the locale which MomentJS should use
    var locale = "fa";

فیلد تاریخ در جداول به صورت Text  با Render از نوع Date مشخص می شود و نتیجه متن تاریخ نهایی در خط زیر مشخص می شود.

case RenderDate date:
    <text>
         render: function (data, type, row, meta) {
            return (data) ? moment(data).locale('@locale').format('@date.Format') : null;
         },
    </text>
    break;

همانطور که ملاحظه می کنید همه تنظیمات به صورت پیش فرض وجود دارد و تنها نیاز هست که پلاگین تاریخ شمسی به moment  اضافه شود. چندین پلاگین تاریخ شمسی توسط اساتید نوشته شده است که من از jalali-calendar  در پروژه ها استفاده می کنم، به دلیل اینکه همه تنظیمات قبلا انجام شده است با اضافه کردن پلاگین شمسی تاریخ ها به صورت صحیح به شمسی نمایش داده می شود.

نتیجه را تصویر زیر مشاهده می کنید

بعد از اعمال تغییرات و نمایش تاریخ شمسی

 

قبل از اعمال تغییرات و تاریخ میلادی

بنا دارم از این به بعد در مورد ناپ کامرس و تجربیاتم بیشتر بنویسم، اگر شما هم سوالی در این مورد دارید بفرمایید، در حد توانم پاسخ می دهم.

 

برای مشاهده آموزش اصلاح DatetimePicker  تاریخ شمسی کلیک کنید

فایل دسته‌بندی محصولات دیجی کالا

اکسل دسته‌بندی محصولات دیجی کالا با بیش از 800 ردیف

سلام، برای شروع به کار feenama.com نیاز داشتیم که یک دسته بندی کلان از محصولاتی که در فروشگاه های اینترتی هستند، داشته باشیم. برای همین به سراغ دیجی کالا رفتیم.

دسته‌‌بندی محصولات دیجی کالا رو در قالب اکسل با بیش از 800 ردیف آماده کردیم، در این فایل رابطه پدر فرزندی دسته ها رعایت شده و شما می توانید در فروشگاه خودتان یا در کارهای علمی (پردازشی) استفاده کنید.

برای خرید فایل دسته‌بندی محصولات دیجی کالا می توانید از فروشگاه فایل استفاده کنید

یا اینجا کلیک کنید

ترجمه فارسی نوپ کامرس

مقایسه بین فایل های منابع زبان در نوپ کامرس و استخراج تگ های جدید

سلام

این روز ها دوستان زیادی برای اجرای پروژه های فروشگاهی به سراغ نوپ کامرس می روند، یکی از مسائلی که برای یکسان سازی زبان ها و ترجمه عبارت های جدید باید حل شود، استخراج تگ های اضافه شده جدید هست.

به عنوان مثال من برای نسخه 4.00 نوپ کامرس فایل زبان ترجمه شده را در اختبار داشتم، (دانلود فایل ترجمه نوپ کامرس برای نسخه 4.00) و وقتی که این بسته را روی نسخه 4.1 اضافه کردم، متوجه شدم که یک سری از عبارت ها اضافه شده است که نیاز به ترجمه دارد (بسته زبان ترجمه نشده نوپ کامرس 4.1). برای ترجمه عبارت ها نیاز داشتم که ابتدا آن هایی که جدید هستند را استخراج کنم.

برای همین یک قطعه کد ساده نوشتم (کد برنامه مقایسه و استخراج عبارت ها در نوپ کامرس) که حاصل خروجی هم شد این، حدود 460 خط که نیاز به ترجمه دارند (دانلود فایل تفاوت عبارت ها نوپ کامرس در نسخه 4.00 و 4.0).

حالا نیاز هست دوستان همت کنند و این عبارت های جدید را ترجمه کنند. لطفا اگر سرویسی را می شناسید که می شود این فایل را به صورت دسته جمعی ترجمه کنیم، معرفی بفرمایید.

 

پی نوشت: می دونم که این کد رو خیلی بهتر هم می تونستم بنویسم، ولی خب … 🙂

 

برنامه مترجم گوگل به زبان #C

سلام

در اولین نوشتم، کمی در باره خودم توضیح بدم و بعد بریم سراغ برنامه.

من امیرحسین مرجانی هستم، ساکن تهران و مهندس نرم افزار، بیش از 6 سال که فعالیت های خودم رو در زمینه فناوری اطلاعات شروع کردم و در زمینه های مختلف تجربه دارم. البته این اولین تجربه وبلاگ نویسی بنده نیست. مدتی روی سیستم های متن باز مثل دروپال (DruplEasy.ir) کار کردم و بعد دوباره به سراغ برنامه نویسی دات نت برگشتم و پروژه ها و تجربیات خوبی در این زمینه دارم که به مرور زمان با هم در میان می گذاریم.

 

چند وقنی هست که سیستم های متن بازِ دات نتی رو بررسی می کردم تا بتونم یکی از آن ها رو برای توسعه (بومی سازی) انتخاب کنم، (بعد ها به صورت مفصل در مورد بومی سازی صحبت خواهم کرد).

برای همین نیاز داشتم که بتوانم تعداد زیادی متن انگلیسی رو به فارسی ترجمه کنم، همانطور که در جربان هستید برنامه نویسان خوب کسانی هستند که هیچ گاه یک کار تکراری رو انجام نمی دهند و همیشه کارهای تکراری رو به دست حلقه و ها و شرط ها می سپارند.

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

مدت ها قبل برنامه ای برای این کار در کدپروجکت دیده بودم، که بنا به فراخور در چند کار کوچک از آن استفاده کرده بودم، ولی این راهکار صحیح استفاده از Google Translate  نبود. برای همین به سراغ Google API  برای Google Translate   رفتم. همان طور که در این لینک قابل مشاهده هست، استفاده از این API رایگان نیست و باید به ازای درخواست های ترجمه پول پرداخت شود.

به همین دلیل به سراغ همان برنامه قبلی برگشتم، ( شاید اگر امکان پرداخت به گوگل را داشتم این کار را می کردم!)

در نسخه های اولیه این برنامه از روش پارس کردن HTML  صفحه استفاده می شد، و در نسخه نهایی که فعلا در دسترس هست از یک سیاست قدیم گوگل استفاده می شد و در حال حاضر امکان استفاده از آن وجود ندارد.

به همین دلیل خودم دست به کار شدم و با بررسی نحوه کار مترجم گوگل و استفاده ار برنامه ای که در بالا گفته بودم، نسخه جدید این برنامه را نوشتم.

Marjani.net Google Translate  Response

 

همان طور که تصویر بالا قابل مشاهده هست، نحوه ارسال و دریافت ترجمه توسط گوگل کاملا مشخص هست و مبنای کار من هم همین مدل ارسال و دریافت هست.

Marjani.net Translator

سورس این برنامه را می توانید از صفحه ” برنامه مترجم گوگل به زبان #C ”  دریافت کنید و یا نسخه از آن را در گیت هاب داشته باشید.