پرنیان: تقویم شمسی برای مایکروسافت پراجکت ۲۰۱۹
مایکروسافت آفیس ۲۰۱۹ و همراه آن پراجکت ۲۰۱۹ منتشر شد. چیزی که برای همهی ما در گسترهنگار خوشحال کننده بود، این نکته است که پرنیان به خوبی روی پراجکت ۲۰۱۹ هم کار میکند. و مشتریان ما میتوانند بدون کمترین مشکل از پرنیان برای فارسیسازی پراجکت ۲۰۱۹ هم استفاده کنند. از روزهای نخستی که کار برروی پرنیان را شروع کردم، حدود ۲۵ سال پیش، همواره این از آرزوهایم بود که پرنیان به شکل یک فارسیساز جامع و کامل ارائه شود. جامع به معنای پوشش دادن حداکثری نرمافزارهای مختلف به ترتیبی که کاربر بتواند با یک نرمافزار واحد نیازهای مختلف فارسیسازی خود را برطرف کند. از جملهی این جامعیت پشتیبانی فارسیسازی در نسخههای مختلف یک نرمافزار است. فارسیسازی در خیلی از مواقع وابسته به جزئیات نرمافزار هدف است و به همین خاطر با تغییر این جزئیات، مثلا با یک بروز رسانی، لازم میشود فارسیساز هم مطابق با این تغییرات بازنویسی شود. این ویژگی برای کاربر نهایی بسیار مشکل ساز میشود. به خصوص در حال حاضر که بروزرسانی نرمافزارها هر آن ممکن است به صورت خودکار انجام شود و روزی نیست که یک وصلهی جدید منتشر نشود. تصور کنید برای هر یک از این بروزرسانیها شما بایستی منتظر شوید تا نسخهی فارسیساز هم ارائه شود. به همین خاطر، دستهای از فناوریها در پرنیان بکار گرفته شده است تا بتواند به شکلی پویا خود را با این تغییرات هماهنگ کند و لازم نباشد با هر تغییر در نرمافزار هدف دوباره ساخته شود. این فناوری قبلا هم بکار آمده بود و کاربران ما از این ویژگی در بروزرسانیهای فرعی از آن بهرهمند شده بودند. اما این برای اولین بار است که در یک بروزرسانی اصلی از نسخهی ۲۰۱۶ به ۲۰۱۹ این فناوری آزمایش شد، و برای ما باعث خوشحالی است که به این خوبی از پس آن برآمد. اما پرنیان چگونه اینکار را انجام میدهد و این فناوریها کدامند؟ اولین و مهمترین نکته در پرنیان پیروی این اصل عمومی در فارسیسازی است: برای فارسیسازی حق ندارید هیچ پروندهای را دستکاری کنید. فارسیسازی تغییر در کدهای اجرایی است. جایی از برنامه کدهایی هستند که تاریخی را نمایش میدهند. برای نمایش تاریخ با تقویم شمسی لازم است این کدها تغییر کنند. اما این کدها جایی روی دیسک سخت شما، مثلا در پروندهی winproj.exe (پروندهی اجرایی مایکروسافت پراجکت) قرار دارند. کامپیوتر شما این برنامه را از روی دیسک میخواند و آنرا اجرا میکند. پس فارسیساز بایستی این پرونده را تغییر دهد تا شما بتوانید از تقویم شمسی استفاده کنید. در این وضعیت اگر یک بروزرسانی را دریافت کنید، پروندهی شما (در این مثال winproj.exe) بروز میشود و فارسیساز از کار میافتد. پس اولین نکته آنست که از تغییر پروندهها اجتناب شود ولی در اینصورت چگونه میشود فارسیسازی را انجام داد؟ در بالا به این موضوع اشاره شد که پروندهها قبل از اجرا، از روی دیسک خوانده میشوند. شاید بشود در این هنگام، یعنی خوانده شدن و پیش از اجرا تغییرات فارسیسازی اجرا شوند. در این صورت دیگر لازم نخواهد بود که پروندهی اجرایی تغییر داده شود. این دقیقا همان کاری است که پرنیان انجام میدهد، یعنی تغییرات لازم برای فارسی سازی را روی حافظهی دستگاه و به هنگام خوانده شدن انجام میدهد و نه بر روی پروندههای ذخیره شده. این روش یک حسن دیگر هم به همراه خود دارد. فرض کنید به هر دلیل کاربر بخواهد فارسیساز خود را غیرفعال کند. این موضوع به خصوص به این دلیل که معمولا اشکالات نرمافزار به فارسیساز نسبت داده میشود، طبیعی است. اشکالی بروز میکند و اولین حدس کاربر این است که این اشکل مربوط به دستکاریهای فارسیسازی است. با توجه به اینکه پرنیان پروندههای اجرایی را تغییر نمیدهد، فقط کافیست با یک کلیک آن را غیرفعال کنید و مطمئن باشید که نرمافزار شما دقیقا همان نسخهی اصلی است و اگر اشکالی در آن بوجود آمده است به چیز دیگری مربوط میشود. اما تغییرات کدها به هنگام خوانده شدن در حافظه مشکلات خاص خود را دارد. اول چگونه از خوانده شدن مطلع شویم. یعنی از کجا متوجه شدیم که مثلا پراجکت اجرا شده است. برای اینکار در نسخههای قدیمیتر پرنیان (پیش از نسخهی ۷)، مجبور بودیم در پرنیان منتظر اجرا به مانیم، یعنی کابر بایستی پرنیان را اجرا میکرد تا پرنیان منتظر اجرای پراجکت میشد. از نسخهی ۷ پرنیان به صورت یک افزونهی استاندارد آفیس ارائه میشود. به این ترتیب پراجکت به هنگام خوانده شدن، خودش پرنیان را بارگزاری میکند و دلیلی برای اجرای پرنیان به عنوان یک برنامهی اضافی نخواه بود. این واقعا نقطهی عطفی در پرنیان محسوب میشود. پرنیان به عنوان یک افزونهی استاندارد نصب میشود. اما عملیات اصلی پس از اجرای پراجکت و به هنگام اعمال تغییرات لازم برای فارسیسازی انجام میشود. در این مرحله فارسیساز بایستی ابتدا محلهای تغییر را پیدا کند و پس از آن تغییرات را اعمال کند. از آنجاییکه پروندهی اجرایی به شکل کدهای ماشینی (Machine Code) است، و با هر تغییر، آدرسدهی آن به کل عوض میشود، عملا ساختار مشخصی برای آنکه بر اساس آن جستجو صورت بگیرد وجود ندارد. برای اینکار پرنیان از الگوریتمهای متعددی برای جستجوی کدهای ماشین استفاده میکند. اما نکتهی کلیدی برای آنکه این روش موثر باشد، رعایت اصل دوم فارسیسازی است: کمترین تغییر برای فارسیسازی به این معنا که انجام هر تغییر هزینهآور است. بنابراین بایستی این تغییرات در کمترین حد ممکن حفظ شوند. این اصل موجب میشود که پرنیان برای فارسیسازی، نقاط اصلی و کم هزینهتر را انتخاب کند. منظور از نقاط اصلی، آن نقاطی هستند که با تغییر آنها بیشترین امکانات فراهم میشود. برای مثال اگر شما تابع اصلی برای قالببندی (Formatting) تاریخ را پیدا کنید، میتوانید با تغییر آن اکثر جاهایی که تاریخ نمایش داده میشود را درست کنید. نکتهی بعدی نحوهی انجام تغییر است. پس از آنکه محل تغییر پیدا شد، بایستی تغییرات در آن اعمال شود. پرنیان تکنیک و فناوری خاص خود را در اعمال این تغییرات دارد. از آنجاییکه در اغلب مواقع، این تغییر در واقع جایگزین کردن یک تابع (function) با تابع دیگر است، ابزارهای مناسبی برای محیطهای مختلف توسعه داده شدهاند. و در نهایت، کارایی و راندمان کد جایگزین شده هم مهم است. برای مثال تمامی کدهای مورد استفاده در آفیس با زبان C توسعه داده شدهاند که بهترین راندمان سرعت را ارائه میکنند. در واقع پرنیان یک افزونهی آفیس است که با C (در مقایسه با افزونههای C#) ساخته شده است و این از مزیتهای مهم آن به شمار میرود. به این ترتیب است که پرنیان کار خود را به خوبی انجام میدهد و به عنوان یک افزونهی کارآمد فارسی میتواند در تمامی نسخههای مایکروسافت پراجکت از ۲۰۰۷ تا ۲۰۱۹ به خوبی کار کند. از آن لذت ببرید این حق شماست: