آمار مرورگرها

 48 % Internet Explorer 6.0
 24 % Internet Explorer 7.0
 12 % FireFox 3.0.1
 9 % FireFox 3.0
 6 % FireFox 3.0.3

وضعیت آب و هوا

تهران - 17°C
فشار هوا : 1017میلی بار
سرعت باد :23 کیلومتر/ساعت

فارسی سازی سیستم مدیریت محتوای جوملا 1.0 پرینت
25 تیر 1387 ساعت 19:41

 

یکی از بزرگترین مشکلاتی که در اوایل کار با سیستم مدیریت محتوای جوملا خودنمایی کرد مسئله مشاهده داده های فارسی در نرم افزار phpmyadmin بود. همچنین این مشکل در واسط گرافیکی mysql administrator نیز وجود داشت. در آن زمان مشکل خود را از طریق مقاله ای در سایت اکسیژن حل کردم که نتیجه آن جایگزینی چند فایل در برنامه phpmyadmin بود.

قابلیت مشاهده داده های فارسی جداول فراهم شد. ولی import/export از کار افتاده بود و به ناچار از نسخه اصلی phpmyadmin هم استفاده می کردم. دستکاری فایلهای اصلی یک نرم افزار چنین تبعاتی را نیز همراه دارد!

اما پس از مدتی با بررسی این 2 نرم افزار و سیستم مدیریت پایگاه داده MySQL متوجه شدم که قابلیت ذخیره و مشاهده داده فارسی در آن ها وجود دارد. پس مشکل در کجا بود؟!

متوجه نسخه فارسی شده جوملا توسط سایت joomla.ir شدم. آن را دانلود کرده و پس از نصب و وارد کردن داده فارسی از محیط CMS به پایگاه داده آن، بازهم مشاهده کردم که متاسفانه داده ها ناخوانا هستند.

با مقداری جستجو در اینترنت سرانجام مشکل حل شد! در حقیقت جوملا 1.0x به صورت پیش فرض داده ها را به فرمت utf-8 به پایگاه داده ارسال نمی کند.(این مشکل در جوملا 1.5 حل شده است.) گرچه این پیش فرض وجود ندارد اما گویا طراحان هوشیار این CMS بستر لازم را در زمان توسعه این ورژن فراهم کرده بوده اند!

در واقع اگر داده ها به فرمت utf-8 به پایگاه داده ارسال نشوند عملا مشکلی در کار با CMS مشاهده نخواهید کرد ولی در مواردی خاص با محدودیت هایی مواجه خواهید شد از قبیل :

- عدم امکان مشاهده داده های فارسی جداول در نرم افزارهای واسط کاربری MySQL مانند : phpMyAdmin ، MySQL Administrator ، ...
- عدم امکان استفاده از ابتدایی ترین امکانات پایگاه داده! مثلا اگر بخواهید لیست اعضا را بر اساس حروف الفبای فارسی مرتب کنید (به کمک دستور Order by name) نتیجه غلط به شما داده خواهد شد چراکه داده ها به فرمت اشتباه در جدول ذخیره شده اند.

 

پس در صورتی که حتی اقدام به استفاده از نسخه فارسی شده این CMS از سایت joomla.ir و یا سایت های نظیر آن می کنید که به این نکته توجه نکرده اند لازم است شخصا تغییراتی را در CMS صورت دهید. پیش فرض را بر این می گذارم که قرار است نسخه اصلی CMS را که از سایت joomla.com دریافت کرده اید جهت درج داده های فارسی بروز رسانی کنیم. پس مراحل زیر را به ترتیب طی نمایید. :

 

 

1.فرمت صفحات شما به صورت پیش فرض باید روی utf-8 قرار بگیرد (می توانید آن را در قسمت encoding مرورگر خود چک نمایید)

 

encoding-view


به این منظور وارد محیط back-end (مدیریت) CMS شوید. فایل Language سایت را باز کنید و [ ISO_ ]  را از طریق مرورگر جستجو کنید. (بدون کروشه جستجو کنید!)

/** templates/*.php */
DEFINE('_ISO','charset=iso-8859-1');
DEFINE('_DATE_FORMAT','l, F d Y');  //Uses PHP's DATE Command Format - Depreciated
/**

مقدار پیش فرض آن در نسخه اصلی عبارت است از :  iso-8859-1
باید آن را به مقدار روبرو تغییر دهید : utf-8

تا نهایتا داشته باشید : 

/** templates/*.php */
DEFINE('_ISO','charset=utf-8');
DEFINE('_DATE_FORMAT','l, F d Y');  //Uses PHP's DATE Command Format - Depreciated
/**

 سپس فایل را ذخیره کرده و صفحه راrefresh کنید. باید مرورگر به طور اتوماتیک encoding utf-8 را انتخاب کند (مانند تصویر بالا)

 

 

 

2. ارتباط با پایگاه داده باید به صورت utf-8 باشد. به عبارت دیگر باید جوملا داده ها را به فرمت utf-8 برای پایگاه داده بفرستد. به این منظور وارد پوشه include شوید و فایل database را باز کنید. عبارت [utf8] راجستجو کنید. پس از یافتن خط زیر:

;(mysql_query("SET NAMES 'utf8'", $this->_resource@//

علامت comment آن را پاک کنید (//) :

;(mysql_query("SET NAMES 'utf8'", $this->_resource@

 فایل را ذخیره کنید. از این پس داده ها به فرمت utf-8 به پایگاه داده ارسال می شوند.

 

 

 

3.مرحله آخر مرحله تبدیل جنس فیلدهای آن دسته از جداول پایگاه داده است که می خواهیم در آن ها داده فارسی ذخیره کنیم. به عنوان مثال به کمک phpMyAdmin ساختار جدول jos_users را ملاحظه کنید:

 

collation-iso


همان طور که می بینید فیلد name از جنس(collation)  مورد نظر ما نیست (latin1_swedish). این بدان معنی است که نمی توانیم داده به فرمت utf-8 را در آن ذخیره کنیم. بنابراین بر روی علامت مداد ردیف آن کلیک کرده و در صفحه جدید در ستون collation گزینه utf8_persian_ci را انتخاب می کنیم.

 

utf8_persian-collation

 

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

مراحل فارسی سازی به اتمام رسیده است اما توجه به چند نکته زیر نیز ضروری به نظر می رسد : 


- در اینجا تنها فیلد name از جدول کاربران را تغییر collation دادیم. اما قسمت های دیگری نیز در CMS هستند که ممکن است فارسی نام گذاری شوند. مثلا منوها. بنابراین لازم است تا جدولjos_menu را نیز بررسی کنید. در حالت کلی این کار برای هر جدولی که قرار است در آن داده فارسی قرار گیرد لازم است. ممکن است خسته کننده بنظر بیاید اما تنها یکبار انجام می شود و در عوض همواره  داده های شما به صورت اصولی و صحیح در جداول قرار خواهند گرفت.


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


- لیست برخی از جدوال که باید فیلدهای آن مورد بازبینی قرار گیرند : jon_users , jos_menu , jos_content , jos_categories , jos_polls , ...
 حدس زدن موارد مشابه کار دشواری به نظر نمی رسد!


- در فیلدهایی که طول در آن ها مشخص می شود (مانند varchar) باید توجه شود که این طول برای latin1 در نظر گرفته شده و با توجه به اینکه شما آن را تغییر نوع می دهید گنجایش این فیلد برای عبارات شما کمتر خواهد بود چرا که کاراکترهای utf-8 فضای بیشتری را اشغال می کنند. بنابراین مناسب است که تا حدی طول آن ها را نیز افزایش دهید. مثلا 2 برابر.


- در جوملا 1.5 جنس فیلدها utf-8 می باشد. علاوه بر آن فایل encoding صفحه پیش فرضutf-8 را دارد. بنابراین نیازی به فارسی سازی ندارید!

- با توجه به قرار دادن تقویم جلالی در فایل joomla.php و همچنین تغییرات جزئی در برخی فایل های جوملا مانند admin.users.html.php توسط تیم joomla.ir در صورتی که می خواهید از نقویم فارسی نیز در سایت بهره بگیرید یا باید این فایل ها را جایگزین فایل های اصلی کنید و یا مراحل 2و3 را روی CMS فارسی شده joomla.ir انجام دهید!

نوشتن نظر
نام:
ایمیل:
 
عنوان:
:angry::0:confused::cheer:B):evil:
:silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P
:unsure::woohoo::huh::whistle:;):s

3.25 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."