1<?php 2namespace Fisharebest\Webtrees\Date; 3 4/** 5 * webtrees: online genealogy 6 * Copyright (C) 2015 webtrees development team 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19use Fisharebest\ExtCalendar\PersianCalendar; 20use Fisharebest\Webtrees\I18N; 21 22/** 23 * Class JalaliDate - Definitions for the Jalali calendar 24 */ 25class JalaliDate extends CalendarDate { 26 /** {@inheritdoc} */ 27 public static $MONTH_ABBREV = array('' => 0, 'FARVA' => 1, 'ORDIB' => 2, 'KHORD' => 3, 'TIR' => 4, 'MORDA' => 5, 'SHAHR' => 6, 'MEHR' => 7, 'ABAN' => 8, 'AZAR' => 9, 'DEY' => 10, 'BAHMA' => 11, 'ESFAN' => 12); 28 29 /** {@inheritdoc} */ 30 public function __construct($date) { 31 $this->calendar = new PersianCalendar; 32 parent::__construct($date); 33 } 34 35 /** {@inheritdoc} */ 36 public static function monthNameNominativeCase($month_number, $leap_year) { 37 static $translated_month_names; 38 39 if ($translated_month_names === null) { 40 $translated_month_names = array( 41 0 => '', 42 1 => /* I18N: 1st month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Farvardin'), 43 2 => /* I18N: 2nd month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Ordibehesht'), 44 3 => /* I18N: 3rd month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Khordad'), 45 4 => /* I18N: 4th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Tir'), 46 5 => /* I18N: 5th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Mordad'), 47 6 => /* I18N: 6th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Shahrivar'), 48 7 => /* I18N: 7th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Mehr'), 49 8 => /* I18N: 8th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Aban'), 50 9 => /* I18N: 9th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Azar'), 51 10 => /* I18N: 10th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Dey'), 52 11 => /* I18N: 11th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Bahman'), 53 12 => /* I18N: 12th month in the Persian/Jalali calendar */ I18N::translateContext('NOMINATIVE', 'Esfand'), 54 ); 55 } 56 57 return $translated_month_names[$month_number]; 58 } 59 60 /** {@inheritdoc} */ 61 protected function monthNameGenitiveCase($month_number, $leap_year) { 62 static $translated_month_names; 63 64 if ($translated_month_names === null) { 65 $translated_month_names = array( 66 0 => '', 67 1 => /* I18N: 1st month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Farvardin'), 68 2 => /* I18N: 2nd month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Ordibehesht'), 69 3 => /* I18N: 3rd month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Khordad'), 70 4 => /* I18N: 4th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Tir'), 71 5 => /* I18N: 5th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Mordad'), 72 6 => /* I18N: 6th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Shahrivar'), 73 7 => /* I18N: 7th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Mehr'), 74 8 => /* I18N: 8th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Aban'), 75 9 => /* I18N: 9th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Azar'), 76 10 => /* I18N: 10th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Dey'), 77 11 => /* I18N: 11th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Bahman'), 78 12 => /* I18N: 12th month in the Persian/Jalali calendar */ I18N::translateContext('GENITIVE', 'Esfand'), 79 ); 80 } 81 82 return $translated_month_names[$month_number]; 83 } 84 85 /** {@inheritdoc} */ 86 protected function monthNameLocativeCase($month_number, $leap_year) { 87 static $translated_month_names; 88 89 if ($translated_month_names === null) { 90 $translated_month_names = array( 91 0 => '', 92 1 => /* I18N: 1st month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Farvardin'), 93 2 => /* I18N: 2nd month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Ordibehesht'), 94 3 => /* I18N: 3rd month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Khordad'), 95 4 => /* I18N: 4th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Tir'), 96 5 => /* I18N: 5th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Mordad'), 97 6 => /* I18N: 6th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Shahrivar'), 98 7 => /* I18N: 7th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Mehr'), 99 8 => /* I18N: 8th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Aban'), 100 9 => /* I18N: 9th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Azar'), 101 10 => /* I18N: 10th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Dey'), 102 11 => /* I18N: 11th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Bahman'), 103 12 => /* I18N: 12th month in the Persian/Jalali calendar */ I18N::translateContext('LOCATIVE', 'Esfand'), 104 ); 105 } 106 107 return $translated_month_names[$month_number]; 108 } 109 110 /** {@inheritdoc} */ 111 protected function monthNameInstrumentalCase($month_number, $leap_year) { 112 static $translated_month_names; 113 114 if ($translated_month_names === null) { 115 $translated_month_names = array( 116 0 => '', 117 1 => /* I18N: 1st month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Farvardin'), 118 2 => /* I18N: 2nd month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Ordibehesht'), 119 3 => /* I18N: 3rd month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Khordad'), 120 4 => /* I18N: 4th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Tir'), 121 5 => /* I18N: 5th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Mordad'), 122 6 => /* I18N: 6th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Shahrivar'), 123 7 => /* I18N: 7th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Mehr'), 124 8 => /* I18N: 8th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Aban'), 125 9 => /* I18N: 9th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Azar'), 126 10 => /* I18N: 10th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Dey'), 127 11 => /* I18N: 11th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Bahman'), 128 12 => /* I18N: 12th month in the Persian/Jalali calendar */ I18N::translateContext('INSTRUMENTAL', 'Esfand'), 129 ); 130 } 131 132 return $translated_month_names[$month_number]; 133 } 134 135 /** {@inheritdoc} */ 136 protected function monthNameAbbreviated($month_number, $leap_year) { 137 static $translated_month_names; 138 139 if ($translated_month_names === null) { 140 $translated_month_names = array( 141 0 => '', 142 1 => I18N::translateContext('Abbreviation for Persian month: Farvardin', 'Far'), 143 2 => I18N::translateContext('Abbreviation for Persian month: Ordibehesht', 'Ord'), 144 3 => I18N::translateContext('Abbreviation for Persian month: Khordad', 'Khor'), 145 4 => I18N::translateContext('Abbreviation for Persian month: Tir', 'Tir'), 146 5 => I18N::translateContext('Abbreviation for Persian month: Mordad', 'Mor'), 147 6 => I18N::translateContext('Abbreviation for Persian month: Shahrivar', 'Shah'), 148 7 => I18N::translateContext('Abbreviation for Persian month: Mehr', 'Mehr'), 149 8 => I18N::translateContext('Abbreviation for Persian month: Aban', 'Aban'), 150 9 => I18N::translateContext('Abbreviation for Persian month: Azar', 'Azar'), 151 10 => I18N::translateContext('Abbreviation for Persian month: Dey', 'Dey'), 152 11 => I18N::translateContext('Abbreviation for Persian month: Bahman', 'Bah'), 153 12 => I18N::translateContext('Abbreviation for Persian month: Esfand', 'Esf'), 154 ); 155 } 156 157 return $translated_month_names[$month_number]; 158 } 159} 160