فارسي کردن تاريخ دروپال به صورت دستي

این افزونه به ماژول Datex منتقل شد.

سلام
اين روش تبديل تاريخ همين روشي است که drupalCms از آن استفاده ميکند و من با اجازه مديريت آن را در اين سايت انتشار ميدهم.
در اين روش تبديل تاريخ ديگه نيازي به نصب هيچ ماژولي نيست، فقط با کمي تأمل و تغيير چندتا فايل ميتونيد به صورت کامل تاريخ را تبديل کنيد.
در ابتدا فايل ضميمه مورد نياز را با نام persiandate.inc را دانلود و در مسير

includes\

ذخيره نماييد.[1]
،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،
براي شناسايي اين فايل توسط دروپال در فايل bootstrap.inc در مسير

includes\

عبارت :

/**


را جستجو کرده و در زير آن خط زير را اضافه نماييد:[2]

@require_once './includes/persiandate.inc';

 

،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،

 

 

در فايل common.inc در مسير

includes\

عبارت :

$format = preg_replace(array('/\\\\\\\\/', '/(?<!\\\\)([AaeDlMTF])/'), array("\xEF\\\\\\\\\xFF", "\xEF\\\\\$1\$1\xFF"), $format);

  // Call date_format().
  $format = date_format($date_time, $format);

به عبارت زير تبديل کنيد:

if($langcode == 'fa'){
$otimezone = date_format($date_time, "O");
$format = jdate($format,$otimezone,$timestamp);
  }else{
  $format = preg_replace(array('/\\\\\\\\/', '/(?<!\\\\)([AaeDlMTF])/'), array("\xEF\\\\\\\\\xFF", "\xEF\\\\\$1\$1\xFF"), $format);

  // Call date_format().
  $format = date_format($date_time, $format);
  }

 

تا اينجا تاريخ نمايشي سيستم شما خورشيدي شده است قسمت بعد بايد تاريخ محتوا(ثبت و ويرايش) را تغيير دهيم
،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،
در فايل comment.module در مسير

 

modules\comment\

عبارت:

if (!empty($form_state['values']['cid'])) {
    // Verify the name in case it is being changed from being anonymous.

را يافته و در زير آن عبارت زير را اضافه نماييد:

global $language;
if($language->language == 'fa'){
$form_state['values']['date'] = drupalcms_node_date($form_state['values']['date']);
}

،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،
در فايل node.module در مسير

modules\node\

1-عبارت:

// Validate the "authored on" field.

 

را يافته و در زير آن عبارت زير را اضافه نماييد:

global $language;
  if($language->language == 'fa'){
$node->date = drupalcms_node_date($node->date);
  }

-----------------------------------------------------------------------------------
2- عبارت:

 

$node->created = !empty($node->date) ? strtotime($node->date) : REQUEST_TIME;

را يافته و در بالاي آن عبارت زير را اضافه نماييد:

global $language;
  if(!empty($node->date) && $language->language == 'fa'){
  $node->date = drupalcms_node_date($node->date);
  }

 

 

،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،
در فايل form.inc در مسير

 

 

includes\

عبارت:
 

$options = drupal_map_assoc(range(1900, 2050));

را يافته و آنرا به عبارت زير تبديل نماييد:

global $language;
if($language->language == 'fa'){
$options = drupal_map_assoc(range(1300, 1400));
}else{
        $options = drupal_map_assoc(range(1900, 2050));
}


 

،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،،
در فايل install.core.inc در مسير

includes\

عبارت:
 

$tasks = array(

را يافته و در بالاي آن عبارت زير را اضافه نماييد:

global $install_state;
  if(!isset($install_state['parameters']['locale'])){
  $install_state['parameters']['locale'] = 'fa';
  $reverse_locale = true;
  }
 
  if($install_state['parameters']['locale'] == 'fa'){
  drupal_add_css(path_to_theme() . '/style-rtl.css', array('group' => CSS_THEME));
  }


[3]
=========================================
[1]: فايل ضميمه فشرده شده و با فرمت rar مي باشد که بايد فايل .inc درون آن در مسير ذکر شده از حالت فشرده خارج شود
[2]: در اين قسمت ميتوانستم شماره خط را ذکر کنم ولي متوجه شدم در ورژن هاي مختلف دروپال متفاوت است
[3]: به محل قرار گيري کد هاي نوشته شده دقت نماييد زيرا در اکثر فايل ها در داخل توابعي است که دقيقاً محلش بايد همان جاي ذکر شده باشد( بالاي خط، پايين خط)
و اينکه در برخي موارد نيز بايد کلاً قسمت ذکر شده تبديل شود.
-----------------------------------------------------------------------------------------------------------------
همواره شاد و پيروز و در پناه حق

فایل ضمیمه: 

پیوستاندازه
Package icon persiandate_0.zip3.73 کیلوبایت

تگ های مطلب: 

دیدگاه‌ها

سلام خیلی خیلی ممنونم. امتحان

سلام خیلی خیلی ممنونم. امتحان کردم بدون هیچ مشکلی. دمتون گرم... انصافا دست مریزاد. راحت شدیم از دست این calendar systems ....

سلام من وقتی در فايل common

سلام من وقتی در فايل common.inc در مسير includes تغییرات گفته شده را ایجاد کردم آدرس سایت رو در مرورگر وارد کردم و خطای زیر را داد. Parse error: syntax error, unexpected $end in D:\xampp\htdocs\test3\includes\common.inc on line 8071 در حالیکه این خط آخرین خط این فایل است و خالی می باشد. میشه راهنمایی کنید که مشکل از کجاست؟

مشکلی نیست دوباره امتحان کردم

مشکلی نیست دوباره امتحان کردم درست شد. ممنون

سلام / یادم میاد پارسال با یه

سلام / یادم میاد پارسال با یه نکبت وصف نشدنی این کار رو کردم . اما این بهانه بود تا تشکر کنم ازتون که کمک میکنین به پیشرفت اپن سورس تو جامعه ای ( برنامه نویس ) که اکثرا اماتور هستن ولی ادعا دارن یه دریا / با این کارتون روح ( روح؟) حضرت استالمن رو شاد میکنید /

اینقدر زحمت لازم نیست از هاست

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

سلام

سلام به نظر میرسه فایل پیوست مشکل داشته باشه لطفا بررسی بفرمایید.

خیلی عالی بود

خیلی عالی بود فقط یک سوال دارم در تغییرات فایل common.inc توی این مقاله پرانتز else را بعد از عبارت // Call date_format(). $format = date_format($date_time, $format); می بنده ولی در نسخه سایت دروپال فارسی قبلش پرانتز اتمام else را می گذاره فرقی داره؟مشکلی پیش نیاد؟ بازهم ممنون از اطلاعات خوبتون

بالاخره بهترین راه شمسی کردن

بالاخره بهترین راه شمسی کردن تاریخ کدومه؟

@#8 بهترین راه استفاده از

@#8 بهترین راه استفاده از ماژول datex هست. http://drupalion.com/blog/158

این خط

سلام ممنون در کل برای من که مشکل می خوره دیگه نمی تونم مطالبم رو آپدیت کنم ولی به نظرتون این خط اشتباه نیست: @require_once './includes/persiandate.inc'; ما داخل پوشه includeهستیم پس باید این طور فراخوان کنیم./persiandate.inc

لازم دونستم برای اون دسته از

لازم دونستم برای اون دسته از کاربرانی که از این روش استفاده میکنند یاد آوری کنم که این روش داره هسته دروپال رو هک میکنه که یک کار خیلی خیلی ناپسنده. دلایل ناپسند بودن این کار رو تو این لینک بخونید. https://drupal.org/best-practices/do-not-hack-core ماژول Persiantools یک زیر ماژول به اسم jalalidate_nodes داره که تاریخ رو برای نمایش Node ها شمسی میکنه ولی شاید تو بقیه بخش ها تاریخ شمسی نباشه مثلا اگه یک View میسازید که فیلد تاریخ رو هم نمایش میده تاریخش رو شمسی نمیکنه ( البته میتونید تاریخ رو به این شکل نمایش بدید که دیگه نیازی به شمسی کردن نباشه: 10 روز و سه ساعت و پنج دقیقه قبل) شاید ماژولی که معرفی کردم یکم محدودیت داشته باشه اما من شخصا ترجیح میدم از این ماژول با محدودیتاش استفاده کنم اما هسته دروپال رو هک نکنم.

درخواست کمک

سلام ممنون از نوشته ی شما ولی پرونده ی comment.module را پیدا نکردم. توی این پوشه ای که گفتین فقط این ها هست: comment.admin.inc comment.api.php comment.css comment.pages.inc comment.tokens.inc comment.tpl.php comment-node-form.js comment-rtl.css comment-wrapper.tpl.php میشه راهنمایی کنید؟

دیدگاه جدیدی بگذارید

آخرین ارسال ها

محتواهای محبوب

درباره ما

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

تماس با ما

با ما تماس بگیرید.

logo-samandehi