فرآیند بومی سازی کامپوننت های تحت وب شرکت DevExpress

مقدمه:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

(قسمت اول): پشتیبانی از تاریخ شمسی

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

هنگامی که صحبت از بومی سازی کامپوننت های حرفه ای شرکت DevExpress برای برنامه نویسان استفاده کننده به میان می آید صرفاً هدف ما اینست که آن مجموعه ابزار برنامه نویسی که توسط یکی از برترین شرکتهای خارجی تولیدکننده کامپوننت همچون شرکت دِوو اِکسپرس در قالب یک فریموورک وبه تفکیک پلتفرم های مختلف طراحی و پیاده شده است را به گونه ای امکاندهی کنیم که برنامه نویس استفاده کننده نه تنها کلیه امکانات اصلی آنرا بطور کامل دراختیار داشته باشد بلکه سایر امکانات مورد نیاز آن نیز برای فارسی زبانان (از قبیل: پشتیانی کامل از تاریخ شمسی + رفع نواقص RTL + ایجاد یا رفع نواقص ریسورس های زبان بومی) را بطور کاملاً قابل قبول و یکپارچه در کنار توانایی های اصلی آن مجموعه کامپوننت بصورت کاملاً کاربردی و عملیاتی در اختیار داشته باشیم. در واقع ما زمانی یک برنامه را بومی سازی شده میدانیم که از صفر تا صد آن توسط برنامه نویسان درهمان کشور طراحی و پیاده سازی شده باشد ولی یا بخواهیم در کشورها یا فرهنگ مختلف از آن استفاده کنیم که خوشبختانه محصولات شرکت دِوو اِکسپرس از این موضوع کماکان پشتیبانی میکنند ولی با توجه باینکه سورس کدهای عظیم شرکت تولید کننده کاملاً در دسترس میباشند،بنابراین جهت استفاده جامع از کلیه امکانات و توانایی های این فریموورک حرفه ای برای فارسی زبانان باید توسط یک تیم توسعه دهنده مسلط به زبان سی شارپ جامع عمل پوشانده شده وکلیه نواقص فوق الذکر کاور شوند. به عنوان یک مثال کوچک می توانید به تصویر زیر توجه کنید که تنها یکی از مشکلات استفاده از نسخه اصلی محصولات این شرکت در زبان فارسی میباشد.

Devexpress_Farsi

پیاده سازی پشتیبانی از تاریخ شمسی :

با توجه باینکه یک برنامه نویس در فرآیند بومی سازی محصولات نرم افزاری خود نهایتاً اقدام به ایجاد فایلهای ریسورس در پروژه و پیاده سازی نحوه عملیاتی شدن آنها بسته به کالچر جاری نرم افزار میکند باید گفت؛ فرآیند بومی سازی کامپوننت های دِوو اِکسپرس در کاربرد پذیر کردن آنها و بکارگیری این فریموُرک در توسعه نرم افزارها در خصوص رعایت استانداردهای نرم افزارهای تولیدی فراتر از این بوده و به طرز چشمگیری در پروژه های ما تاثیرگذار است چرا که چتانچه بومی سازی بمعنای واقعی و استاندارد انجام نشود میتواند منجربه یک فاجعه وخسارات مادی و معنوی زیادی برای آن شرکت وتیم توسعه دهنده آن به بار بیاورد. به عنوان مثال: با استفاده از نسخه اصلی محصولات شرکت DevExpress در پروژه های زبان فارسی، یکی از بزرگترین و چالش برانگیزترین موردی که با آن مواجه خواهیم شد عدم ساپورت کامپوننت های آن از تاریخ شمسی می باشد که جتی با تغییر کالچر جاری، نه تنها تاریخ شمسی در کامپوننت جاری عملیاتی نمیشود بلکه عملاً استفاده از آبجکتهای بسیار کاربردی و مهمی همچون : DateEdit و Calendarهای آن را دور از دسترس برنامه نویسان ایرانی قرار میدهد.

حال به دلیل اینکه توسط شرکت اصلی از همین دو کامپوننت در اکثر آبجکتهای این مجموعه (و البته به تفکیک هر پلتفرم) با ظرافت و زیبایی تمام بصورت درون برنامه ای بکار گرفته شده است، مجدداً استفاده از کامپوننت های مهمی همچون DataGrid و... را نیز از دسترس برنامه نویس فارسی زبان خارج میسازد.

عدم پشتیبانی این مجموعه کامپوننت ها از تاریخ شمسی بشکل درون برنامه ای همچون: فیلترینگ های مختلف در بازه های تاریخی بر روی اطلاعات DataGrid و عملیات CRUD آن و نیز در کامپوننت هایی مانند TreeView و یا گرید حرفه ای و بسیار منعطف پذیر Pivot (و سایر آبجکتهای کاربردی ...) از این مجموعه باز دلیلی بر چشم پوشی از این فریموورک حرفه ای و قدرتمند برای برنامه نویسان حرفه ای فارسی زبان در پلتفرم وب و وبندوز فرم میباشد.

نسخه بومی شده

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

devexpress web

برای درک بهتر مطلب از توضیحات داده شده در تصاویر فوق می توانید دموهای مربوطه را از (اینجا) دریافت کنید.

یکی دیگر از کامپوننت های بسیار حرفه ای و مورد نیاز برنامه نویسان فارسی زبان Scheduler از این مجموعه میباشد که تاکنون هیچ ابزاری مشابه آن با این دقت و زیبایی و ظرافت و پرفورمانس توسط شرکتهای رقیب Devexpress تولید نشده است. لطفاً به تصاویر زیر دقت کنید :

دوو اکسپرس

در تصویر زیر نیز میتوان کامپوننت محبوب Scheduler تحت وب که بطور کامل قابل بومی سازی همراه با پشتیبانی از تاریخ شمسی میباشد را مشاهده کرد:

DevExpress_Farsi

قصد ما از قرادادن تصاویر فوق اینست که به این باور برسیم که امکان توسعه و بومی سازی مجموعه کامپوننت های این فریموورک قدرتمند و زیبا با چندمیلیون سطر کدنویسی های تودرتو و نوشته شده توسط توسعه دهندگان ایرانی کاملاً امکان پذیر است و تنها با درک درستی از بومی سازی و در نهایت تسلط نسبی بر زبان سی شارپ و مباحث شی گرائی توانایی پیاده سازی این مهم توسط هر توسعه دهنده ای کاملاً امکان پذیر می باشد که میتوانید دموی تحت وب آنرا از (اینجا) دریافت کنید.

نکته بسیار مهم اینکه:

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

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

(قسمت دوم): مراحل پیاده سازی

در  قسمت قبل با مفهوم اصلی بومی سازی و بطور مقدماتی یک شناخت نسبی از این امکاندهی و پیاده سازی آن در کامپوننت های حرفه ای شرکت دِوو اِکسپرس برای فارسی زبانان جهت بکارگیری حداکثر توانایی های این فریموورک قدرتمند و حرفه ای در تولید نرم افزارهای داخلی مطالبی خدمت شما عزیزان ارائه شد و در این بخش تصمیم داریم نکات ریز و درشتی از مراحل و چگونگی پیاده سازی این فرآیند در این مجموعه کامپوننت های ارزشمند قسمتهای مهمی را با شما دوستان به اشتراک بگذاریم.برای این منظور تیم توسعه دهنده با چند چالش اصلی روبه روست که به ترتیب اولویت عبارتند از :

1) راه اندازی مجموعه سورس کدها در قالب یک یا چند سولوشن تفکیک شده (به تشخیص توسعه دهنده) و سپس تولید یک توکن عمومی (Key Token) و در نهایت استفاده از این کلید که دراصل یکی از اصلی ترین مراحل و شرایط آماده سازی این مجموعه کامپوننت ها برای ریکامپایل کردن میباشد. زیرا بدون ساخت و در دست داشتن این کلید و ست کردن آن داخل پروژه های مربوطه از این مجموعه کامپوننت ها، حتی چنانچه امکان ریکامپایل نهایی را داشته باشید ولی بیش از 80درصد اسمبلی ها امکان دسترسی به کلاسها و اینترفیس ها و توابع یکدیگر را عملاً از دست میدهند و خروجی شما عملاً هیچگونه کارآیی (حتی در حد نسخه اصلی نیز) برایتان نخواهد داشت. این توکن تولید شده باید مطابق مراحل تعیین شده در تصویر زیر در پروژه ها شناسایی (یا Signing) شود:

DevExpress Farsi

مراحل ساخت و تولید این توکن (توسط ویژوال استودیو) در سایتها به وفور آموزش داده شده است.

2)در فدم دوم به اصلی ترین و مهمترین مرحله و بزرگترین چالشی که در این مجموعه برای برنامه نویسان فارسی زبان وجود دارد می رسیم. در اینجا تیم توسعه دهنده باید به رفع کلیه مشکلات ریز و درشت مربوط به پشتیبانی این کامپوننت های این مجموعه از تاریخ شمسی پرداخته بدون اینکه کدنویسی های آنها باعث بوجود آمدن خدشه ای به عملکرد اصلی یا ظرافت و زیبایی و پرفورمانس نسخه اصلی شود، چرا که قرار است امکانی به امکانات این ابزار افزوده شود نه اینکه در اثر ایجا یک امکان امکانات نسخه اصلی دستخوش تغییرات شوند. حال در این خصوص کدها باید بصورتی نوشته و در سورس اصلی تزریق شوند که هیچگونه کاهش سرعتی در محاسبات تاریخ شمسی و انواع حالات نمایشی آن چه در کالندارها و چه در سایرقسمتها نسبت به نمایش دیگر سالنامه هایی که نسخه اصلی ساپورت میکند نداشته باشد و این پیاده سازی توسط تیم توسعه دهنده باید بشکلی انجام شود که برنامه نویسان استفاده کننده از این کامپوننت ها:

2-1) به سهولت و راحتی هرچه تمام امکان استفاده از این ابزار را در پروژه های نرم افزاری خود داشته باشند.

2-2) چنانچه برنامه نویسان استفاده کننده از این مجموعه ی بومی سازی شده، پروژه (های) خود را قبلآً با هر کم وکاستی با نسخه اصلی پیاده سازی کرده اند وحال تصمیم به آپدیت پروژه های خود با اسمبلی های بومی سازی شده دارند، این جایگزینی نباید باعث هیچگونه تغییری در سورس کدهای قبلی استفاده کنندگان از این کامپوننتها شده و باعث به هدر رفتن زمان و انرژی آنها شود. در واقع استفاده کنندگان از نسخه بومی سازی شده نه تنها باید امتیازات و امکانات خیلی بیشتری را نسبت به نسخه اصلی در استفاده از این کامپوننت ها در پروژه های خود بدست آوردند بلکه امکان جایگزینی اسمبلی های نسخه بومی سازی شده در پروژه های آنها (فقط) با ReBuild کردن هرکدام از پروژه هایشان به راحتی امکان پذیر بوده و بدون هیچگونه Errorای که مربوط به این جایگزینی باشد در حالت یومی و غیربومی خیلی شیک و مجلسی قابل اجرا باشند.

2-3) همانطوریکه در پایان (قسمت قبلی) تاکید کردیم، نسخه بومی سازی شده همچنان باید امکان ذخیره وبازیابی تاریخ با فرمت DateTime را همچون نسخه اصلی به برنامه نویسان استفاده کننده بدهد که در این خصوص کلیه عملیات باید در پس زمینه وبدون دخالت برنامه نویس نهایی استفاده کننده در اختیار وی قرار گیرد.

نکته (1):

باتوجه به اینکه برنامه نویسان حرفه ای و علاقمند به استفاده از این فریموُرک میدانند که این مجموعه بطور ذاتی تاریخ شمسی را توسط شرکت اصلی در هیچکدام از پلتفرم های خود پشتیبانی نمیکند، بنابراین تیم توسعه دهنده با ظرافت و خلاقیت و نوآوری های خود باید این بخش از بومی سازی را بشکلی پیاده سازی کنند تا سایر استفاده کنندگان از این مجموعه، حاصل دستاورد نسخه بومی سازی شده را مربوط به ساپورت تیم Developerهای شرکت اصلی تولید کننده (ِDevExpress) تصور کنند.

نکته (2):

تیم توسعه دهنده باید در نظر داشته باشد که در پیاده سازی تاریخ شمسی چالشهای ریز و درشتی رو باید پشت سربگذارد که بسته به نوع پلتفرمی که از این مجموعه قصد این پیاده سازی را برای آن دارد میتواند متفاوت باشد. به عنوان مثال: برای این تغییرات در اسمبلی های دسکتاپ و ویندوز فرم تیم توسعه دهنده با رصد کردن کلاس ها و کدهای سی شارپ تودرتوی این مجموعه سر و کار دارد، در حالیکه این موضوع در پلتفرم وب کار را برای این توسعه دهندگان بسیار دشوارتر و ناهموارتر میکند چرا که از یکطرف وی با کدهای سمت سرور و سی شارپ و از طرف دیگر با کدهای کلاینتی و جاوا اسکریپتی باید بطور هماهنگ کد زده و از آنجاییکه مبحث تاریخ در پیاده سازی کلیه نرم افزارهایی که به کاربران نهایی ارائه میدهیم یک فیلد ضروری و بسیار کاربردیست و در انوماسیون های اداری و نرم افزارهای سازمانی بیشترین کاربرد محاسباتی در فیلترینگ داده ها یا واکشی داده ها یا ایجاد انواع گزارشات با فرمتهای مختلف خروجی و محاسباتی را دارد، بنابراین باید قبل از ارائه نسخه ریلیز اسمبلی های این مجموعه، با تمرکز بالایی روی این مبحث فوکاس کرده تا برنامه نویسان علاقمند به استفاده از این اسمبلی ها، بدون هیچ مشکلی به راحتی از حداکثر تواناییهای این فریموُورک در پروژه های فارسی زبان خود بهره ببرند.

DevExpress Farsi

باید به این موضوع توجه داشت که؛ مبحث تاریخ تنها و تنها به یک Calendar و DateEdit در هیچکدام از این اسمبلی ها برای استفاده در پلتفرم های مختلف ختم نمیشود چرا که ما از یکطرف در جای جای استفاده از این کامپوننت ها با مبحث تاریخ در کامپوننتهای مهم و بزرگی همچون: Scheduler – DataGrid – PivotGrid و غیره... و از طرفی دیگر کلیه قسمتهای تغذیه شونده و درون برنامه ای از این اسمبلی ها همچون فرم های عملیاتی داخلی هرکدام، استفاده از فیلترینگ های مختلف در بازه های زمانی، انواع گروه بندی ها و... سروکار داریم و به همین دلیل است که میگوئیم بدون پشتیبانی این فریموورک قدرتمند از تاریخ شمسی، استفاده از آن برای برنامه نویسان حرفه ای عملاً ناهموار و یا دور از دسترس است زیرا ارائه یک نرم افزار حرفه ای و شیک در کوتاهترین زمان به کاربران نهایی را مستلزم بکارگیری تکنوبوژی های جدید و ابزار و فریموُرکهای حرفه ای در آن میدانیم.


فرشید علی اکبری
فرشید علی اکبری

برنامه نویس دات نت در زمینه اتوماسیون اداری و سیستم های مالی اداری در سطح شرکتها و سازمان ها - طراح بانک های اطلاعاتی SQL SERVER - بومی سازی کامپوننت های DevExpress برای برنامه نویسان فارسی زبان Telegram Channel : https://telegram.me/DevExpress_Farsi

نظرات