به طور کلی عمل بومی سازی یا فارسی کردن در اودوو شامل سه جزء اصلی است:
فارسی کردن متنها
فارسی کردن تقویم
اضافه کردن سرویس هایی مثل درگاه پرداخت ایرانی که مخصوص کاربران ایران است.
فارسی کردن متن
در بخش فارسی سازی متن باید با استفاده از ابزار های ارائه شده توسط دو تیم اودوو و OCA، ماژولهایی که در مرحله نهایی هستند فارسی سازی شوند. به همین منظور، وظیفه اصلی در این بخش این است که در سایت هایی که لینک آنها در ادامه آمده است، ابتدا لاگین کرده و سپس تمامی جملههای موجود در این سایت ها ترجمه شود.
این کار را باید برای تمامی ماژول هایی که توسط تیم خود ما ایجاد می شود نیز تکرار کنیم. در ادامه به شرح دقیق تر مراحل کار فارسی سازی متن می پردازیم:
نصب poedit
ورود به پروژهها
ایجاد فایل های ترجمه
فارسی کردن تقویم
فارسی کردن یا بومی سازی تقویم عموما باید در چند بخش به صورت مستقل انجام شود. دلیل اصلی این کار این است که بخشها به صورت کاملا مستقل از یکدیگر کار میکنند و هر بخش روش مختص خود را برای نمایش تاریخ دارد.
برای انجام عمل بومی سازی تقویم، باید در دو بخش اصلی بک اند و فرانت اند، تغییراتی ایجاد شوند.
بخش بک اند
در بخش بک اند عملیات سمت سرور انجام می شود که شامل موارد زیر است:
بومی سازی فیلد های تاریخ در پی دی اف صورت حساب
دسته بندی رکورد ها بر اساس تاریخ
بومی سازی فیلد های تاریخ در پی دی اف صورت حساب
برای این کار یک مدل به نام ir_qweb_fields در ماژول تقویم فارسی ایجاد شده است که در آن از مدل های از قبل ایجاد شده در اودوو ارث بری می کند و توابع تعریف شده در این مدل ها تغییر یا بازنویسی
دسته بندی رکورد ها بر اساس تاریخ
یکی از مهمترین مواردی که در سرور انجام میشود و در فارسی سازی موثر است، دسته بندی کردن رکوردها بر اساس تاریخ است. در این حالت یک درخواست read group ارسال میشود و ما باید دستههای ممکن به وجود آمده را ارسال کنیم. در این دسته بندی اگر تاریخ به عنوان یک فیلد دسته بندی در نظر گرفته شود باید دو قابلیت را برای آن تعیین کنیم:
-
برچسب دسته بندی
برچسب دسته در واقع همان سطح یا معیار دسته بندی است که رکورد ها بر اساس آن دسته بندی می شوند. در ماژول تقویم فارسی برچسب های دسته بندی شامل سال، ربع، ماه، هفته و روز هستند.
بازه تاریخ مورد استفاده در بخش جستجو ها
برای پیاده سازی این دو قابلیت، باید مدل BaseModel را با تکنیکهای پایتونی تغییر دهید و محتوای متد زیر را برای تولید نتیجه مورد نظر بازنویسی کنید.
تابع basemodel: _read_group_format_result
این تابع برای ایجاد برچسب مناسب استفاده می شود. برای ایجاد برچسب فارسی باید تغییراتی در این تابع اعمال شود. در محتوای این تغییرات، در صورتی که زبان سیستم به فارسی عوض شود، برای بدست آوردن معادل فارسی برچسب، یک تابع به نام format_label_custom فراخوانی می شود.
در ماژول تقویم فارسی، برای پیاده سازی تغییرات ذکر شده روی مدل BaseModel یک مدل به نام hack_odoo_base_model تعریف شده است. در این مدل با تکنیک ارث بری از مدل BaseModel، توابع _read_group_format_result در دسترس قرار می گیرد و سپس ویرایش و بازنویسی می شود.
بخش فرانت اند
این بخش شامل عملیاتی است که کاربر می تواند نتایج آن را در UI سایت مشاهده کند. این عملیات شامل موارد زیر است:
-
بازنویسی سرویس های جاوا اسکریپتی
برای بومی سازی تقویم نیاز است که سرویس های جاوا اسکریپتی موجود در ماژول web بازنویسی شوند. دو تا از سرویس هایی که برای این کار بازنویسی می شوند فایل های localization_service.js و dates.js است.
-
بازنویسی بخش هایی از ماژول های جاوا اسکریپتی
-
گسترش یا تغییر کامپوننت های OWL
-
تغییر ویجت های قدیمی اودوو
شرح روش بازنویسی یک سرویس
فرض کنید که یک سرویس رو بخواهیم باز نویسی یا ویرایش کنیم که این به صورت زیر انجام می شود:
-
ابتدا باید سرویس اصلی مورد نظر را در سرویسی که در ماژول خود ایجاد کرده ایم، import کنیم. برای import شدن یک سرویس، نیاز است که مسیری که سرویس در آن ذخیره شده است در کد اضافه شود. به عنوان مثال برای بازنویسی یا ویرایش سرویس dates باید از کد زیر استفاده کنیم:
;"import * as dates from "@web/core/l10n/dates بعد از import شدن سرویس اصلی، تمام متدها و متغیرهای موجود در آن سرویس در سرویس خودمان در دسترس است و می توانیم آنها را ویرایش یا بازنویسی کنیم. به عنوان مثال با استفاده از قطعه کد زیر می توانیم متد areDateEquals را که از متد های سرویس dates است، بازنویسی یا ویرایش کنیم.
زمانی که یک متد از سرویس اصلی را در سرویس خود بازنویسی و یا ویرایش می کنید، باید تمام متغیرهایی که در سرویس اصلی تعریف شده و در متد مورد نظر از آنها استفاده شده است را در سرویس خود نیز تعریف کنید. به عنوان مثال متغیرهای SERVER_DATE_FORMAT، SERVER_TIME_FORMAT، SERVER_DATETIME_FORMAT را که در سرویس اصلی dates تعریف شده اند، نیاز است در سرویس خود تعریف کنید.
در صورت بازنویسی یا ویرایش یک متد، اگر خروجی متد شما با خروجی متد اصلی متفاوت باشد، باید خروجی متد خود را برگردانید.
تذکر : توسعه دهندگان اودوو باید علاوه بر تغییر سرویس های اصلی بر اساس نیاز خود، تغییر این سرویس ها بر اساس نسخه اودوو را هم در نظر بگیرند. به عنوان مثال اگر می خواهید مشابه یک ماژول در اودوو ۱۶ را در اودوو ۱۷ نیز ایجاد کنید، باید تمام قسمت های بازنویسی یا ویرایش شده را با توجه به سرویس ها و متد های بروز شده در نسخه اودوو مجددا ویرایش یا بازنویسی کنید.
بخشی از دادههایی که در وب نمایش داده میشود مستقیم از پایگاه داده آورده میشود. این نوع دادهها بدون دستکاری نمایش داده میشود. برای نمونه زمانی که شما یک فهرست را بر اساس تاریخ گروه بندی میکنید، عنوان هر گروه سمت سرور تعیین شده و به عنوان پارامتر ارسال میشود. در نمایش Kanban همین مقدار به صورت مستقیم نمایش داده میشود. معمولا از درخواست زیر برای دسته بندی استفاده میشود.
https://etachar.com/web/dataset/call_kw/sale.order/web_read_group
تقویم فارسی اودوو ۱۷