00001 <?php
00030 class Zend_Translate_Plural
00031 {
00035 public static function getPlural($number, $locale)
00036 {
00037 if ($locale == "pt_BR") {
00038
00039 $locale = "xbr";
00040 }
00041
00042 if (strlen($locale) > 3) {
00043 $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));
00044 }
00045
00046 switch($locale) {
00047 case 'bo':
00048 case 'dz':
00049 case 'id':
00050 case 'ja':
00051 case 'jv':
00052 case 'ka':
00053 case 'km':
00054 case 'kn':
00055 case 'ko':
00056 case 'ms':
00057 case 'th':
00058 case 'tr':
00059 case 'vi':
00060 return 0;
00061 break;
00062
00063 case 'af':
00064 case 'az':
00065 case 'bn':
00066 case 'bg':
00067 case 'ca':
00068 case 'da':
00069 case 'de':
00070 case 'el':
00071 case 'en':
00072 case 'eo':
00073 case 'es':
00074 case 'et':
00075 case 'eu':
00076 case 'fa':
00077 case 'fi':
00078 case 'fo':
00079 case 'fur':
00080 case 'fy':
00081 case 'gl':
00082 case 'gu':
00083 case 'ha':
00084 case 'he':
00085 case 'hu':
00086 case 'is':
00087 case 'it':
00088 case 'ku':
00089 case 'lb':
00090 case 'ml':
00091 case 'mn':
00092 case 'mr':
00093 case 'nah':
00094 case 'nb':
00095 case 'ne':
00096 case 'nl':
00097 case 'nn':
00098 case 'no':
00099 case 'om':
00100 case 'or':
00101 case 'pa':
00102 case 'pap':
00103 case 'ps':
00104 case 'pt':
00105 case 'so':
00106 case 'sq':
00107 case 'sv':
00108 case 'sw':
00109 case 'ta':
00110 case 'te':
00111 case 'tk':
00112 case 'ur':
00113 case 'zh':
00114 case 'zu':
00115 return ($number == 1) ? 0 : 1;
00116
00117 case 'am':
00118 case 'bh':
00119 case 'fil':
00120 case 'fr':
00121 case 'gun':
00122 case 'hi':
00123 case 'ln':
00124 case 'mg':
00125 case 'nso':
00126 case 'xbr':
00127 case 'ti':
00128 case 'wa':
00129 return (($number == 0) || ($number == 1)) ? 0 : 1;
00130
00131 case 'be':
00132 case 'bs':
00133 case 'hr':
00134 case 'ru':
00135 case 'sr':
00136 case 'uk':
00137 return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
00138
00139 case 'cs':
00140 case 'sk':
00141 return ($number == 1) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2);
00142
00143 case 'ga':
00144 return ($number == 1) ? 0 : (($number == 2) ? 1 : 2);
00145
00146 case 'lt':
00147 return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
00148
00149 case 'sl':
00150 return ($number % 100 == 1) ? 0 : (($number % 100 == 2) ? 1 : ((($number % 100 == 3) || ($number % 100 == 4)) ? 2 : 3));
00151
00152 case 'mk':
00153 return ($number % 10 == 1) ? 0 : 1;
00154
00155 case 'mt':
00156 return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3));
00157
00158 case 'lv':
00159 return ($number == 0) ? 0 : ((($number % 10 == 1) && ($number % 100 != 11)) ? 1 : 2);
00160
00161 case 'pl':
00162 return ($number == 1) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 > 29))) ? 1 : 2);
00163
00164 case 'cy':
00165 return ($number == 1) ? 0 : (($number == 2) ? 1 : ((($number == 8) || ($number == 11)) ? 2 : 3));
00166
00167 case 'ro':
00168 return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2);
00169
00170 case 'ar':
00171 return ($number == 0) ? 0 : (($number == 1) ? 1 : (($number == 2) ? 2 : ((($number >= 3) && ($number <= 10)) ? 3 : ((($number >= 11) && ($number <= 99)) ? 4 : 5))));
00172
00173 default:
00174 return 0;
00175 }
00176 }
00177 }