برای حل مشکل محتوای زیر را در فایل /public_html/language/fa-IR/localise.php جایگزین کنید.
defined('_JEXEC') or die;
use Joomla\CMS\Date\Date;
abstract class Fa_IRLocalise {
public static function getPluralSuffixes($count) {
if ($count == 0) {
$return = array('0');
}
elseif($count == 1) {
$return = array('ONE', '1');
}
else {
$return = array('OTHER', 'MORE');
}
return $return;
}
public static function getIgnoredSearchWords() {
$search_ignore = array();
$search_ignore[] = "and";
$search_ignore[] = "in";
$search_ignore[] = "on";
return $search_ignore;
}
public static function getLowerLimitSearchWord() {
return 3;
}
public static function getUpperLimitSearchWord() {
return 20;
}
public static function getSearchDisplayedCharactersNumber() {
return 200;
}
}
class fa_IRDate extends Date {
const DAY_NUMBER = "\x027\x03";
const DAY_NUMBER2 = "\x030\x03";
const DAY_YEAR = "\x032\x03";
const MONTH_ABBR = "\x033\x03";
const MONTH_NAME = "\x034\x03";
const MONTH_NUMBER = "\x035\x03";
const MONTH_NUMBER2 = "\x036\x03";
const MONTH_LENGTH = "\x037\x03";
const YEAR_ABBR = "\x040\x03";
const YEAR_NAME = "\x041\x03";
const AM_LOWER = "\x042\x03";
const AM_UPPER = "\x043\x03";
const PERSIAN_EPOCH = 1948320.5;
protected static $month_names = array("فروردين","ارديبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند");
public function calendar($format, $local = false, $translate = true)
{
// Replace format strings that can be translated.
$format = preg_replace('/(^|[^\\\])d/', "\\1".self::DAY_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])j/', "\\1".self::DAY_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])z/', "\\1".self::DAY_YEAR, $format);
$format = preg_replace('/(^|[^\\\])M/', "\\1".self::MONTH_ABBR, $format);
$format = preg_replace('/(^|[^\\\])F/', "\\1".self::MONTH_NAME, $format);
$format = preg_replace('/(^|[^\\\])n/', "\\1".self::MONTH_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])m/', "\\1".self::MONTH_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])t/', "\\1".self::MONTH_LENGTH, $format);
$format = preg_replace('/(^|[^\\\])y/', "\\1".self::YEAR_ABBR, $format);
$format = preg_replace('/(^|[^\\\])Y/', "\\1".self::YEAR_NAME, $format);
$format = preg_replace('/(^|[^\\\])a/', "\\1".self::AM_LOWER, $format);
$format = preg_replace('/(^|[^\\\])A/', "\\1".self::AM_UPPER, $format);
// Format the date using parent method.
$return = parent::calendar($format, $local);
// Convert to Jalali date.
$jd = gregoriantojd($this->month, $this->day, $this->year);
$jalaliDate = self::jd_to_persian($jd);
$m = $jalaliDate['mon'];
$d = $jalaliDate['day'];
$y = $jalaliDate['year'];
// Replace placeholders with Persian values.
if (strpos($return, self::DAY_NUMBER) !== false) {
$return = str_replace(self::DAY_NUMBER, $d , $return);
}
if (strpos($return, self::DAY_NUMBER2) !== false) {
$return = str_replace(self::DAY_NUMBER2, sprintf("%02d",$d), $return);
}
if (strpos($return, self::DAY_YEAR) !== false) {
$return = str_replace(self::DAY_YEAR, $jd - self::persian_to_jd(1,1,$y)+1, $return);
}
if (strpos($return, self::MONTH_ABBR) !== false) {
$return = str_replace(self::MONTH_ABBR, self::$month_names[$m-1] , $return);
}
if (strpos($return, self::MONTH_NAME) !== false) {
$return = str_replace(self::MONTH_NAME, self::$month_names[$m-1] , $return);
}
if (strpos($return, self::MONTH_NUMBER) !== false) {
$return = str_replace(self::MONTH_NUMBER, $m , $return);
}
if (strpos($return, self::MONTH_NUMBER2) !== false) {
$return = str_replace(self::MONTH_NUMBER2, sprintf("%02d", $m) , $return);
}
if (strpos($return, self::MONTH_LENGTH) !== false) {
$return = str_replace(self::MONTH_LENGTH, ($m < 7 ? 31 : (($m < 12 ? 30 : self::leap_persian($y)) ? 30 : 29)) , $return);
}
if (strpos($return, self::YEAR_ABBR) !== false) {
$return = str_replace(self::YEAR_ABBR, sprintf("%02d",$y % 100), $return);
}
if (strpos($return, self::YEAR_NAME) !== false) {
$return = str_replace(self::YEAR_NAME, $y, $return);
}
if (strpos($return, self::AM_LOWER) !== false) {
$return = str_replace(self::AM_LOWER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return);
}
if (strpos($return, self::AM_UPPER) !== false) {
$return = str_replace(self::AM_UPPER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return);
}
return $return;
}
/**
* Converts a Julian Day to a Persian (Jalali) date.
*/
public static function jd_to_persian($jd)
{
$depoch = $jd - self::persian_to_jd(1, 1, 475);
$cycle = floor($depoch / 1029983);
$cyear = $depoch % 1029983;
if ($cyear == 1029982) {
$ycycle = 2820;
} else {
$aux1 = floor($cyear / 366);
$aux2 = $cyear % 366;
$ycycle = floor(((2134 * $aux1) + (2816 * $aux2) + 2815) / 1028522) + $aux1 + 1;
}
$year = $ycycle + (2820 * $cycle) + 474;
if ($year <= 0) {
$year--;
}
$yday = ($jd - self::persian_to_jd(1, 1, $year)) + 1;
$month = ($yday <= 186) ? ceil($yday / 31) : ceil(($yday - 6) / 30);
$day = ($jd - self::persian_to_jd($month, 1, $year)) + 1;
return array('year'=>$year, 'mon'=>$month,'day'=> $day);
}
/**
* Converts a Persian (Jalali) date to Julian Day.
*/
public static function persian_to_jd($month, $day, $year)
{
$epbase = $year - (($year >= 0) ? 474 : 473);
$epyear = 474 + $epbase % 2820;
return $day +
(($month <= 7) ? (($month - 1) * 31) : ((($month - 1) * 30) + 6)) +
floor((($epyear * 682) - 110) / 2816) +
($epyear - 1) * 365 +
floor($epbase / 2820) * 1029983 +
self::PERSIAN_EPOCH;
}
/**
* Checks if a Persian year is a leap year.
*/
public static function leap_persian($year)
{
return (((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682;
}
}


ثبت نظرات