26 #require_once 'Zend/Locale.php'; 29 #require_once 'Zend/Xml/Security.php'; 47 private static $_ldml = array();
54 private static $_list = array();
61 private static $_cache =
null;
68 private static $_cacheTags =
false;
75 private static $_cacheDisabled =
false;
105 if (!empty(self::$_ldml[(
string) $locale])) {
115 $temp[] = (string) $found;
116 }
else if (empty($temp[(
string) $found[
$attribute]])){
118 $temp[(string) $found[
$attribute]] = (
string) $found;
121 }
else if (empty ($temp[
$value])) {
125 $temp[
$value] = (string) $found;
153 if (empty(self::$_ldml[(
string) $locale])) {
154 $filename = dirname(
__FILE__) .
'/Data/' . $locale .
'.xml';
155 if (!file_exists($filename)) {
156 #require_once 'Zend/Locale/Exception.php'; 165 $tok = strtok(
$path,
'/');
168 if (!empty(self::$_ldml[(
string) $locale])) {
169 while ($tok !==
false) {
170 $search .=
'/' . $tok;
171 if (strpos($search,
'[@') !==
false) {
172 while (strrpos($search,
'[@') > strrpos($search,
']')) {
177 $search = $search .
'/' . $tok;
180 $result = self::$_ldml[(string) $locale]->xpath($search .
'/alias');
189 if ($newpath !=
'//ldml') {
192 while (substr($newpath,0,3) ==
'../') {
193 $newpath = substr($newpath, 3);
194 $search = substr($search, 0, strrpos($search,
'/'));
198 $path = $search .
'/' . $newpath;
199 while (($tok = strtok(
'/'))!==
false) {
230 private static function _getFile($locale,
$path,
$attribute =
false,
$value =
false, $temp = array())
243 if (($locale !=
'root') && (
$result)) {
245 if (
false !== strpos($locale,
'_')) {
252 $locale = substr($locale, 0, -strlen(strrchr($locale,
'_')));
253 if (!empty($locale)) {
269 private static function _calendarDetail($locale, $list)
272 foreach ($list as $key =>
$value) {
273 if (strpos($locale,
'_') !==
false) {
274 $locale = substr($locale, strpos($locale,
'_') + 1);
276 if (strpos($key, $locale) !==
false) {
291 private static function _checkLocale($locale)
293 if (empty($locale)) {
298 #require_once 'Zend/Locale/Exception.php'; 306 return (
string) $locale;
320 $locale = self::_checkLocale($locale);
322 if (!isset(self::$_cache) && !self::$_cacheDisabled) {
323 #require_once 'Zend/Cache.php'; 327 array(
'automatic_serialization' =>
true),
333 $val = implode(
'_' ,
$value);
336 $val = urlencode($val);
338 if (!self::$_cacheDisabled && (
$result = self::$_cache->load(
$id))) {
343 switch(strtolower(
$path)) {
345 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/languages/language',
'type');
349 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/scripts/script',
'type');
353 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/territories/territory',
'type');
355 foreach($temp as $key =>
$value) {
356 if ((is_numeric($key) ===
false) and ($key !=
'QO') and ($key !=
'EU')) {
360 }
else if (
$value === 2) {
361 foreach($temp as $key =>
$value) {
362 if (is_numeric($key) or ($key ==
'QO') or ($key ==
'EU')) {
370 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/variants/variant',
'type');
374 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/keys/key',
'type');
379 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/types/type',
'type');
381 if ((
$value ==
'calendar') or
382 (
$value ==
'collation') or
384 $temp = self::_getFile($locale,
'/ldml/localeDisplayNames/types/type[@key=\'' .
$value .
'\']
', 'type
'); 386 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/types/type[@type=\
'' .
$value .
'\']
', 'type
'); 392 $temp = self::_getFile($locale, '/ldml/layout/orientation/characterOrder
', '', 'characterOrder
'); 393 $temp += self::_getFile($locale, '/ldml/layout/orientation/lineOrder
', '', 'lineOrder
'); 396 case 'contexttransform
': 398 $value = 'uiListOrMenu
'; 400 $temp = self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'languages\']/contextTransform[@type=\''.
$value.
'\']
', '', 'languages
'); 401 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'day-format-except-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'day-format-except-narrow
'); 402 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'day-standalone-except-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'day-standalone-except-narrow
'); 403 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'day-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'day-narrow
'); 404 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'month-format-except-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'month-format-except-narrow
'); 405 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'month-standalone-except-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'month-standalone-except-narrow
'); 406 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'month-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'month-narrow
'); 407 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'script\']/contextTransform[@type=\''.$value.
'\']
', '', 'script
'); 408 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'territory\']/contextTransform[@type=\''.$value.
'\']
', '', 'territory
'); 409 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'variant\']/contextTransform[@type=\''.$value.
'\']
', '', 'variant
'); 410 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'key\']/contextTransform[@type=\''.$value.
'\']
', '', 'key
'); 411 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'type\']/contextTransform[@type=\''.$value.
'\']
', '', 'type
'); 412 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'era-name\']/contextTransform[@type=\''.$value.
'\']
', '', 'era-
name'); 413 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'era-abbr\']/contextTransform[@type=\''.$value.
'\']
', '', 'era-abbr
'); 414 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'era-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'era-narrow
'); 415 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'quater-format-wide\']/contextTransform[@type=\''.$value.
'\']
', '', 'quater-format-wide
'); 416 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'quater-standalone-wide\']/contextTransform[@type=\''.$value.
'\']
', '', 'quater-standalone-wide
'); 417 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'quater-abbreviated\']/contextTransform[@type=\''.$value.
'\']
', '', 'quater-abbreviated
'); 418 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'quater-narrow\']/contextTransform[@type=\''.$value.
'\']
', '', 'quater-narrow
'); 419 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'calendar-field\']/contextTransform[@type=\''.$value.
'\']
', '', 'calendar-field
'); 420 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'symbol\']/contextTransform[@type=\''.$value.
'\']
', '', 'symbol
'); 421 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'tense\']/contextTransform[@type=\''.$value.
'\']
', '', 'tense
'); 422 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'zone-exemplarCity\']/contextTransform[@type=\''.$value.
'\']
', '', 'zone-exemplarCity
'); 423 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'zone-long\']/contextTransform[@type=\''.$value.
'\']
', '', 'zone-
long'); 424 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'zone-short\']/contextTransform[@type=\''.$value.
'\']
', '', 'zone-
short'); 425 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'metazone-long\']/contextTransform[@type=\''.$value.
'\']
', '', 'metazone-
long'); 426 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'metazone-short\']/contextTransform[@type=\''.$value.
'\']
', '', 'metazone-
short'); 427 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'displayName-count\']/contextTransform[@type=\''.$value.
'\']
', '', 'displayName-count
'); 428 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'displayName\']/contextTransform[@type=\''.$value.
'\']
', '', 'displayName
'); 429 $temp += self::_getFile($locale, '/ldml/contextTransforms/contextTransformUsage[@type=\
'unit-pattern\']/contextTransform[@type=\''.$value.
'\']
', '', 'unit-pattern
'); 433 $temp = self::_getFile($locale, '/ldml/characters/exemplarCharacters
', '', 'characters
'); 434 $temp += self::_getFile($locale, '/ldml/characters/exemplarCharacters[@type=\
'auxiliary\']',
'',
'auxiliary');
439 $temp = self::_getFile($locale,
'/ldml/delimiters/quotationStart',
'',
'quoteStart');
440 $temp += self::_getFile($locale,
'/ldml/delimiters/quotationEnd',
'',
'quoteEnd');
441 $temp += self::_getFile($locale,
'/ldml/delimiters/alternateQuotationStart',
'',
'quoteStartAlt');
442 $temp += self::_getFile($locale,
'/ldml/delimiters/alternateQuotationEnd',
'',
'quoteEndAlt');
446 $temp = self::_getFile(
'supplementalData',
'/supplementalData/measurementData/measurementSystem[@type=\'metric\']',
'territories',
'metric');
447 $temp += self::_getFile(
'supplementalData',
'/supplementalData/measurementData/measurementSystem[@type=\'US\']',
'territories',
'US');
448 $temp += self::_getFile(
'supplementalData',
'/supplementalData/measurementData/paperSize[@type=\'A4\']',
'territories',
'A4');
449 $temp += self::_getFile(
'supplementalData',
'/supplementalData/measurementData/paperSize[@type=\'US-Letter\']',
'territories',
'US-Letter');
456 $temp[
'context'] =
"format";
457 $temp[
'default'] =
"wide";
458 $temp[
'format'][
'abbreviated'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'format\']/monthWidth[@type=\'abbreviated\']/month',
'type');
459 $temp[
'format'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'format\']/monthWidth[@type=\'narrow\']/month',
'type');
460 $temp[
'format'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'format\']/monthWidth[@type=\'wide\']/month',
'type');
461 $temp[
'stand-alone'][
'abbreviated'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'stand-alone\']/monthWidth[@type=\'abbreviated\']/month',
'type');
462 $temp[
'stand-alone'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'stand-alone\']/monthWidth[@type=\'narrow\']/month',
'type');
463 $temp[
'stand-alone'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/months/monthContext[@type=\
'stand-alone\']/monthWidth[@type=\'wide\']/month',
'type');
468 $value = array(
"gregorian",
"format",
"wide");
470 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/months/monthContext[@type=\
'' .
$value[1] .
'\']/monthWidth[@type=\
'' .
$value[2] .
'\']/month
', 'type
'); 475 $value = "gregorian"; 477 $temp['context
'] = "format"; 478 $temp['default'] = "wide"; 479 $temp['format
']['abbreviated
'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/days/dayContext[@type=\
'format\']/dayWidth[@type=\'abbreviated\']/day',
'type');
480 $temp[
'format'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/days/dayContext[@type=\
'format\']/dayWidth[@type=\'narrow\']/day',
'type');
481 $temp[
'format'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/days/dayContext[@type=\
'format\']/dayWidth[@type=\'wide\']/day',
'type');
482 $temp[
'stand-alone'][
'abbreviated'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/days/dayContext[@type=\
'stand-alone\']/dayWidth[@type=\'abbreviated\']/day',
'type');
483 $temp[
'stand-alone'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/days/dayContext[@type=\
'stand-alone\']/dayWidth[@type=\'narrow\']/day',
'type');
484 $temp[
'stand-alone'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/days/dayContext[@type=\
'stand-alone\']/dayWidth[@type=\'wide\']/day',
'type');
489 $value = array(
"gregorian",
"format",
"wide");
491 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/days/dayContext[@type=\
'' .
$value[1] .
'\']/dayWidth[@type=\
'' .
$value[2] .
'\']/day
', 'type
'); 495 $minDays = self::_calendarDetail($locale, self::_getFile('supplementalData
', '/supplementalData/weekData/minDays
', 'territories
')); 496 $firstDay = self::_calendarDetail($locale, self::_getFile('supplementalData
', '/supplementalData/weekData/firstDay
', 'territories
')); 497 $weekStart = self::_calendarDetail($locale, self::_getFile('supplementalData
', '/supplementalData/weekData/weekendStart
', 'territories
')); 498 $weekEnd = self::_calendarDetail($locale, self::_getFile('supplementalData
', '/supplementalData/weekData/weekendEnd
', 'territories
')); 500 $temp = self::_getFile('supplementalData
', "/supplementalData/weekData/minDays[@territories='" . $minDays . "']", 'count
', 'minDays
'); 501 $temp += self::_getFile('supplementalData
', "/supplementalData/weekData/firstDay[@territories='" . $firstDay . "']", 'day
', 'firstDay
'); 502 $temp += self::_getFile('supplementalData
', "/supplementalData/weekData/weekendStart[@territories='" . $weekStart . "']", 'day
', 'weekendStart
'); 503 $temp += self::_getFile('supplementalData
', "/supplementalData/weekData/weekendEnd[@territories='" . $weekEnd . "']", 'day
', 'weekendEnd
'); 508 $value = "gregorian"; 510 $temp['format
']['abbreviated
'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/quarters/quarterContext[@type=\
'format\']/quarterWidth[@type=\'abbreviated\']/quarter',
'type');
511 $temp[
'format'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/quarters/quarterContext[@type=\
'format\']/quarterWidth[@type=\'narrow\']/quarter',
'type');
512 $temp[
'format'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/quarters/quarterContext[@type=\
'format\']/quarterWidth[@type=\'wide\']/quarter',
'type');
513 $temp[
'stand-alone'][
'abbreviated'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/quarters/quarterContext[@type=\
'stand-alone\']/quarterWidth[@type=\'abbreviated\']/quarter',
'type');
514 $temp[
'stand-alone'][
'narrow'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/quarters/quarterContext[@type=\
'stand-alone\']/quarterWidth[@type=\'narrow\']/quarter',
'type');
515 $temp[
'stand-alone'][
'wide'] = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/quarters/quarterContext[@type=\
'stand-alone\']/quarterWidth[@type=\'wide\']/quarter',
'type');
520 $value = array(
"gregorian",
"format",
"wide");
522 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/quarters/quarterContext[@type=\
'' .
$value[1] .
'\']/quarterWidth[@type=\
'' .
$value[2] .
'\']/quarter
', 'type
'); 527 $value = "gregorian"; 529 $temp['names
'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/eras/eraNames/era
', 'type
'); 530 $temp['abbreviated
'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/eras/eraAbbr/era
', 'type
'); 531 $temp['narrow
'] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/eras/eraNarrow/era
', 'type
'); 536 $value = array("gregorian", "Abbr"); 538 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/eras/era
' . $value[1] . '/era
', 'type
'); 543 $value = "gregorian"; 545 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'full\']/dateFormat/pattern',
'',
'full');
546 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'long\']/dateFormat/pattern',
'',
'long');
547 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'medium\']/dateFormat/pattern',
'',
'medium');
548 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'short\']/dateFormat/pattern',
'',
'short');
555 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'full\']/timeFormat/pattern',
'',
'full');
556 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'long\']/timeFormat/pattern',
'',
'long');
557 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'medium\']/timeFormat/pattern',
'',
'medium');
558 $temp += self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'short\']/timeFormat/pattern',
'',
'short');
566 $timefull = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'full\']/timeFormat/pattern',
'',
'full');
567 $timelong = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'long\']/timeFormat/pattern',
'',
'long');
568 $timemedi = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'medium\']/timeFormat/pattern',
'',
'medi');
569 $timeshor = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/timeFormats/timeFormatLength[@type=\
'short\']/timeFormat/pattern',
'',
'shor');
571 $datefull = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'full\']/dateFormat/pattern',
'',
'full');
572 $datelong = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'long\']/dateFormat/pattern',
'',
'long');
573 $datemedi = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'medium\']/dateFormat/pattern',
'',
'medi');
574 $dateshor = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateFormats/dateFormatLength[@type=\
'short\']/dateFormat/pattern',
'',
'shor');
576 $full = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateTimeFormats/dateTimeFormatLength[@type=\
'full\']/dateTimeFormat/pattern',
'',
'full');
577 $long = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateTimeFormats/dateTimeFormatLength[@type=\
'long\']/dateTimeFormat/pattern',
'',
'long');
578 $medi = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateTimeFormats/dateTimeFormatLength[@type=\
'medium\']/dateTimeFormat/pattern',
'',
'medi');
579 $shor = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateTimeFormats/dateTimeFormatLength[@type=\
'short\']/dateTimeFormat/pattern',
'',
'shor');
581 $temp[
'full'] = str_replace(array(
'{0}',
'{1}'), array($timefull[
'full'], $datefull[
'full']), $full[
'full']);
582 $temp[
'long'] = str_replace(array(
'{0}',
'{1}'), array($timelong[
'long'], $datelong[
'long']), $long[
'long']);
583 $temp[
'medium'] = str_replace(array(
'{0}',
'{1}'), array($timemedi[
'medi'], $datemedi[
'medi']), $medi[
'medi']);
584 $temp[
'short'] = str_replace(array(
'{0}',
'{1}'), array($timeshor[
'shor'], $dateshor[
'shor']), $shor[
'shor']);
591 $_temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value .
'\']/dateTimeFormats/availableFormats/dateFormatItem
', 'id'); 592 foreach($_temp as $key => $found) { 593 $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/dateTimeFormats/availableFormats/dateFormatItem[@
id=\
'' . $key .
'\']
', '', $key); 599 $value = "gregorian"; 601 $_temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/dateTimeFormats/intervalFormats/intervalFormatItem
', 'id'); 602 foreach($_temp as $key => $found) { 603 $temp[$key] = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/dateTimeFormats/intervalFormats/intervalFormatItem[@
id=\
'' . $key .
'\']/greatestDifference
', 'id'); 609 $value = "gregorian"; 611 $temp2 = self::_getFile($locale, '/ldml/dates/fields/field
', 'type
'); 612 // $temp2 = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/fields/field
', 'type
'); 613 foreach ($temp2 as $key => $keyvalue) { 614 $temp += self::_getFile($locale, '/ldml/dates/fields/field[@type=\
'' . $key .
'\']/displayName
', '', $key); 615 // $temp += self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/fields/field[@type=\
'' . $key .
'\']/displayName
', '', $key); 623 $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\
'' .
$value .
'\']/relative
', 'type
'); 627 $temp = self::_getFile($locale, '/ldml/numbers/symbols/decimal
', '', 'decimal
'); 628 $temp += self::_getFile($locale, '/ldml/numbers/symbols/group
', '', 'group
'); 629 $temp += self::_getFile($locale, '/ldml/numbers/symbols/list
', '', 'list
'); 630 $temp += self::_getFile($locale, '/ldml/numbers/symbols/percentSign
', '', 'percent
'); 631 $temp += self::_getFile($locale, '/ldml/numbers/symbols/nativeZeroDigit
', '', 'zero
'); 632 $temp += self::_getFile($locale, '/ldml/numbers/symbols/patternDigit
', '', 'pattern
'); 633 $temp += self::_getFile($locale, '/ldml/numbers/symbols/plusSign
', '', 'plus
'); 634 $temp += self::_getFile($locale, '/ldml/numbers/symbols/minusSign
', '', 'minus
'); 635 $temp += self::_getFile($locale, '/ldml/numbers/symbols/exponential
', '', 'exponent
'); 636 $temp += self::_getFile($locale, '/ldml/numbers/symbols/perMille
', '', 'mille
'); 637 $temp += self::_getFile($locale, '/ldml/numbers/symbols/infinity
', '', 'infinity
'); 638 $temp += self::_getFile($locale, '/ldml/numbers/symbols/nan
', '', 'nan
'); 641 case 'nametocurrency
': 642 $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency
', 'type
'); 643 foreach ($_temp as $key => $found) { 644 $temp += self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' . $key .
'\']/displayName
', '', $key); 648 case 'currencytoname
': 649 $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency
', 'type
'); 650 foreach ($_temp as $key => $keyvalue) { 651 $val = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' . $key .
'\']/displayName
', '', $key); 652 if (!isset($val[$key])) { 655 if (!isset($temp[$val[$key]])) { 656 $temp[$val[$key]] = $key; 658 $temp[$val[$key]] .= " " . $key; 663 case 'currencysymbol
': 664 $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency
', 'type
'); 665 foreach ($_temp as $key => $found) { 666 $temp += self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' . $key .
'\']/symbol
', '', $key); 671 $temp = self::_getFile($locale, '/ldml/posix/messages/yesstr
', '', 'yes
'); 672 $temp += self::_getFile($locale, '/ldml/posix/messages/nostr
', '', 'no
'); 675 case 'currencyfraction
': 676 $_temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info
', 'iso4217
'); 677 foreach ($_temp as $key => $found) { 678 $temp += self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info[@iso4217=\
'' . $key .
'\']
', 'digits
', $key); 682 case 'currencyrounding
': 683 $_temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info
', 'iso4217
'); 684 foreach ($_temp as $key => $found) { 685 $temp += self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info[@iso4217=\
'' . $key .
'\']
', 'rounding
', $key); 689 case 'currencytoregion
': 690 $_temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/region
', 'iso3166
'); 691 foreach ($_temp as $key => $keyvalue) { 692 $temp += self::_getFile('supplementalData
', '/supplementalData/currencyData/region[@iso3166=\
'' . $key .
'\']/currency
', 'iso4217
', $key); 696 case 'regiontocurrency
': 697 $_temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/region
', 'iso3166
'); 698 foreach ($_temp as $key => $keyvalue) { 699 $val = self::_getFile('supplementalData
', '/supplementalData/currencyData/region[@iso3166=\
'' . $key .
'\']/currency
', 'iso4217
', $key); 700 if (!isset($val[$key])) { 703 if (!isset($temp[$val[$key]])) { 704 $temp[$val[$key]] = $key; 706 $temp[$val[$key]] .= " " . $key; 711 case 'regiontoterritory
': 712 $_temp = self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group
', 'type
'); 713 foreach ($_temp as $key => $found) { 714 $temp += self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group[@type=\
'' . $key .
'\']
', 'contains
', $key); 718 case 'territorytoregion
': 719 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group
', 'type
'); 721 foreach ($_temp2 as $key => $found) { 722 $_temp += self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group[@type=\
'' . $key .
'\']
', 'contains
', $key); 724 foreach($_temp as $key => $found) { 725 $_temp3 = explode(" ", $found); 726 foreach($_temp3 as $found3) { 727 if (!isset($temp[$found3])) { 728 $temp[$found3] = (string) $key; 730 $temp[$found3] .= " " . $key; 736 case 'scripttolanguage
': 737 $_temp = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 738 foreach ($_temp as $key => $found) { 739 $temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'scripts
', $key); 740 if (empty($temp[$key])) { 746 case 'languagetoscript
': 747 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 749 foreach ($_temp2 as $key => $found) { 750 $_temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'scripts
', $key); 752 foreach($_temp as $key => $found) { 753 $_temp3 = explode(" ", $found); 754 foreach($_temp3 as $found3) { 755 if (empty($found3)) { 758 if (!isset($temp[$found3])) { 759 $temp[$found3] = (string) $key; 761 $temp[$found3] .= " " . $key; 767 case 'territorytolanguage
': 768 $_temp = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 769 foreach ($_temp as $key => $found) { 770 $temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'territories
', $key); 771 if (empty($temp[$key])) { 777 case 'languagetoterritory
': 778 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 780 foreach ($_temp2 as $key => $found) { 781 $_temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'territories
', $key); 783 foreach($_temp as $key => $found) { 784 $_temp3 = explode(" ", $found); 785 foreach($_temp3 as $found3) { 786 if (empty($found3)) { 789 if (!isset($temp[$found3])) { 790 $temp[$found3] = (string) $key; 792 $temp[$found3] .= " " . $key; 798 case 'timezonetowindows
': 799 $_temp = self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone
', 'other
'); 800 foreach ($_temp as $key => $found) { 801 $temp += self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone[@other=\
'' . $key .
'\']
', 'type
', $key); 805 case 'windowstotimezone
': 806 $_temp = self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone
', 'type
'); 807 foreach ($_temp as $key => $found) { 808 $temp += self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone[@type=\
'' .$key .
'\']
', 'other
', $key); 812 case 'territorytotimezone
': 813 $_temp = self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone
', 'type
'); 814 foreach ($_temp as $key => $found) { 815 $temp += self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone[@type=\
'' . $key .
'\']
', 'territory
', $key); 819 case 'timezonetoterritory
': 820 $_temp = self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone
', 'territory
'); 821 foreach ($_temp as $key => $found) { 822 $temp += self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone[@territory=\
'' . $key .
'\']
', 'type
', $key); 826 case 'citytotimezone
': 827 $_temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone
', 'type
'); 828 foreach($_temp as $key => $found) { 829 $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\
'' . $key .
'\']/exemplarCity
', '', $key); 833 case 'timezonetocity
': 834 $_temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone
', 'type
'); 836 foreach($_temp as $key => $found) { 837 $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\
'' . $key .
'\']/exemplarCity
', '', $key); 838 if (!empty($temp[$key])) { 839 $temp[$temp[$key]] = $key; 845 case 'phonetoterritory
': 846 $_temp = self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory
', 'territory
'); 847 foreach ($_temp as $key => $keyvalue) { 848 $temp += self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory[@territory=\
'' . $key .
'\']/telephoneCountryCode
', 'code
', $key); 852 case 'territorytophone
': 853 $_temp = self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory
', 'territory
'); 854 foreach ($_temp as $key => $keyvalue) { 855 $val = self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory[@territory=\
'' . $key .
'\']/telephoneCountryCode
', 'code
', $key); 856 if (!isset($val[$key])) { 859 if (!isset($temp[$val[$key]])) { 860 $temp[$val[$key]] = $key; 862 $temp[$val[$key]] .= " " . $key; 867 case 'numerictoterritory
': 868 $_temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes
', 'type
'); 869 foreach ($_temp as $key => $keyvalue) { 870 $temp += self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@type=\
'' . $key .
'\']
', 'numeric
', $key); 874 case 'territorytonumeric
': 875 $_temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes
', 'numeric
'); 876 foreach ($_temp as $key => $keyvalue) { 877 $temp += self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@numeric=\
'' . $key .
'\']
', 'type
', $key); 881 case 'alpha3toterritory
': 882 $_temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes
', 'type
'); 883 foreach ($_temp as $key => $keyvalue) { 884 $temp += self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@type=\
'' . $key .
'\']
', 'alpha3
', $key); 888 case 'territorytoalpha3
': 889 $_temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes
', 'alpha3
'); 890 foreach ($_temp as $key => $keyvalue) { 891 $temp += self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@alpha3=\
'' . $key .
'\']
', 'type
', $key); 895 case 'postaltoterritory
': 896 $_temp = self::_getFile('postalCodeData
', '/supplementalData/postalCodeData/postCodeRegex
', 'territoryId
'); 897 foreach ($_temp as $key => $keyvalue) { 898 $temp += self::_getFile('postalCodeData
', '/supplementalData/postalCodeData/postCodeRegex[@territoryId=\
'' . $key .
'\']
', 'territoryId
'); 902 case 'numberingsystem
': 903 $_temp = self::_getFile('numberingSystems
', '/supplementalData/numberingSystems/numberingSystem
', 'id'); 904 foreach ($_temp as $key => $keyvalue) { 905 $temp += self::_getFile('numberingSystems
', '/supplementalData/numberingSystems/numberingSystem[@
id=\
'' . $key .
'\']
', 'digits
', $key); 906 if (empty($temp[$key])) { 912 case 'chartofallback
': 913 $_temp = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character
', 'value'); 914 foreach ($_temp as $key => $keyvalue) { 915 $temp2 = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character[@
value=\
'' . $key .
'\']/substitute
', '', $key); 916 $temp[current($temp2)] = $key; 920 case 'fallbacktochar
': 921 $_temp = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character
', 'value'); 922 foreach ($_temp as $key => $keyvalue) { 923 $temp += self::_getFile('characters
', '/supplementalData/characters/character-fallback/character[@
value=\
'' . $key .
'\']/substitute
', '', $key); 927 case 'localeupgrade
': 928 $_temp = self::_getFile('likelySubtags
', '/supplementalData/likelySubtags/likelySubtag
', 'from
'); 929 foreach ($_temp as $key => $keyvalue) { 930 $temp += self::_getFile('likelySubtags
', '/supplementalData/likelySubtags/likelySubtag[@from=\
'' . $key .
'\']
', 'to
', $key); 935 $_temp = self::_getFile($locale, '/ldml/units/unitLength/unit
', 'type
'); 936 foreach($_temp as $key => $keyvalue) { 937 $_temp2 = self::_getFile($locale, '/ldml/units/unitLength/unit[@type=\
'' . $key .
'\']/unitPattern
', 'count
'); 938 $temp[$key] = $_temp2; 943 #require_once 'Zend/Locale/Exception.php
'; 944 throw new Zend_Locale_Exception("Unknown list ($path) for parsing locale data."); 948 if (isset(self::$_cache)) { 949 if (self::$_cacheTags) { 950 self::$_cache->save( serialize($temp), $id, array('Zend_Locale')); 952 self::$_cache->save( serialize($temp), $id); 968 public static function getContent($locale, $path, $value = false) 970 $locale = self::_checkLocale($locale); 972 if (!isset(self::$_cache) && !self::$_cacheDisabled) { 973 #require_once 'Zend/Cache.php
'; 974 self::$_cache = Zend_Cache::factory( 977 array('automatic_serialization
' => true), 982 if (is_array($value)) { 983 $val = implode('_
' , $value); 985 $val = urlencode($val); 986 $id = self::_filterCacheId('Zend_LocaleC_
' . $locale . '_
' . $path . '_
' . $val); 987 if (!self::$_cacheDisabled && ($result = self::$_cache->load($id))) { 988 return unserialize($result); 991 switch(strtolower($path)) { 993 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/languages/language[@type=\
'' .
$value .
'\']
', 'type
'); 997 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/scripts/script[@type=\
'' .
$value .
'\']
', 'type
'); 1002 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory[@type=\
'' .
$value .
'\']
', 'type
'); 1006 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/variants/variant[@type=\
'' .
$value .
'\']
', 'type
'); 1010 $temp = self::_getFile($locale, '/ldml/localeDisplayNames/keys/key[@type=\
'' .
$value .
'\']
', 'type
'); 1013 case 'defaultcalendar
': 1014 $givenLocale = new Zend_Locale($locale); 1015 $territory = $givenLocale->getRegion(); 1016 unset($givenLocale); 1017 $temp = self::_getFile('supplementalData
', '/supplementalData/calendarPreferenceData/calendarPreference[contains(@territories,\
'' . $territory .
'\')]
', 'ordering
', 'ordering
'); 1018 if (isset($temp['ordering
'])) { 1019 list($temp) = explode(' ', $temp['ordering
']); 1021 $temp = 'gregorian
'; 1025 case 'monthcontext
': 1026 /* default context is always 'format
' 1027 if (empty ($value)) { 1028 $value = "gregorian"; 1030 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/months/
default', 'choice
', 'context
'); 1035 case 'defaultmonth
': 1036 /* default width is always 'wide
' 1037 if (empty ($value)) { 1038 $value = "gregorian"; 1040 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/months/monthContext[@type=\
'format\']/default',
'choice',
'default');
1048 $value = array(
"gregorian",
"format",
"wide", $temp);
1050 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/months/monthContext[@type=\
'' .
$value[1] .
'\']/monthWidth[@type=\
'' .
$value[2] .
'\']/month[@type=\
'' .
$value[3] .
'\']
', 'type
'); 1054 /* default context is always 'format
' 1055 if (empty($value)) { 1056 $value = "gregorian"; 1058 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/days/
default', 'choice
', 'context
'); 1064 /* default width is always 'wide
' 1065 if (empty($value)) { 1066 $value = "gregorian"; 1068 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/days/dayContext[@type=\
'format\']/default',
'choice',
'default');
1076 $value = array(
"gregorian",
"format",
"wide", $temp);
1078 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/days/dayContext[@type=\
'' .
$value[1] .
'\']/dayWidth[@type=\
'' .
$value[2] .
'\']/day[@type=\
'' .
$value[3] .
'\']
', 'type
'); 1082 if (!is_array($value)) { 1084 $value = array("gregorian", "format", "wide", $temp); 1086 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/quarters/quarterContext[@type=\
'' .
$value[1] .
'\']/quarterWidth[@type=\
'' .
$value[2] .
'\']/quarter[@type=\
'' .
$value[3] .
'\']
', 'type
'); 1090 if (empty($value)) { 1091 $value = array("gregorian", "format", "wide"); 1093 if (!is_array($value)) { 1095 $value = array($temp, "format", "wide"); 1097 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dayPeriods/dayPeriodContext[@type=\
'' .
$value[1] .
'\']/dayPeriodWidth[@type=\
'' .
$value[2] .
'\']/dayPeriod[@type=\
'am\']',
'',
'dayPeriod');
1102 $value = array(
"gregorian",
"format",
"wide");
1106 $value = array($temp,
"format",
"wide");
1108 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/dayPeriods/dayPeriodContext[@type=\
'' .
$value[1] .
'\']/dayPeriodWidth[@type=\
'' .
$value[2] .
'\']/dayPeriod[@type=\
'pm\']',
'',
'dayPeriod');
1114 $value = array(
"gregorian",
"Abbr", $temp);
1116 $temp = self::_getFile($locale,
'/ldml/dates/calendars/calendar[@type=\'' .
$value[0] .
'\']/eras/era
' . $value[1] . '/era[@type=\
'' .
$value[2] .
'\']
', 'type
'); 1120 /* default choice is deprecated in CDLR - should be always medium here 1121 if (empty($value)) { 1122 $value = "gregorian"; 1124 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/dateFormats/
default', 'choice
', 'default'); 1130 if (empty($value)) { 1131 $value = array("gregorian", "medium"); 1133 if (!is_array($value)) { 1135 $value = array("gregorian", $temp); 1137 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dateFormats/dateFormatLength[@type=\
'' .
$value[1] .
'\']/dateFormat/pattern
', '', 'pattern
'); 1141 /* default choice is deprecated in CDLR - should be always medium here 1142 if (empty($value)) { 1143 $value = "gregorian"; 1145 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value .
'\']/timeFormats/
default', 'choice
', 'default'); 1151 if (empty($value)) { 1152 $value = array("gregorian", "medium"); 1154 if (!is_array($value)) { 1156 $value = array("gregorian", $temp); 1158 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/timeFormats/timeFormatLength[@type=\
'' .
$value[1] .
'\']/timeFormat/pattern
', '', 'pattern
'); 1162 if (empty($value)) { 1163 $value = array("gregorian", "medium"); 1165 if (!is_array($value)) { 1167 $value = array("gregorian", $temp); 1170 $date = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dateFormats/dateFormatLength[@type=\
'' .
$value[1] .
'\']/dateFormat/pattern
', '', 'pattern
'); 1171 $time = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/timeFormats/timeFormatLength[@type=\
'' .
$value[1] .
'\']/timeFormat/pattern
', '', 'pattern
'); 1172 $datetime = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dateTimeFormats/dateTimeFormatLength[@type=\
'' .
$value[1] .
'\']/dateTimeFormat/pattern
', '', 'pattern
'); 1173 $temp = str_replace(array('{0}
', '{1}
'), array(current($time), current($date)), current($datetime)); 1177 if (empty($value)) { 1178 $value = array("gregorian", "yyMMdd"); 1180 if (!is_array($value)) { 1182 $value = array("gregorian", $temp); 1184 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dateTimeFormats/availableFormats/dateFormatItem[@
id=\
'' .
$value[1] .
'\']
', ''); 1187 case 'dateinterval
': 1188 if (empty($value)) { 1189 $value = array("gregorian", "yMd", "y"); 1191 if (!is_array($value)) { 1193 $value = array("gregorian", $temp, $temp[0]); 1195 $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/dateTimeFormats/intervalFormats/intervalFormatItem[@
id=\
'' .
$value[1] .
'\']/greatestDifference[@
id=\
'' .
$value[2] .
'\']
', ''); 1199 if (!is_array($value)) { 1201 $value = array("gregorian", $temp); 1203 $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\
'' .
$value[1] .
'\']/displayName
', '', $value[1]); 1207 if (!is_array($value)) { 1209 $value = array("gregorian", $temp); 1211 $temp = self::_getFile($locale, '/ldml/dates/fields/field[@type=\
'day\']/relative[@type=\'' .
$value[1] .
'\']
', '', $value[1]); 1212 // $temp = self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\
'' .
$value[0] .
'\']/fields/field/relative[@type=\
'' .
$value[1] .
'\']
', '', $value[1]); 1215 case 'defaultnumberingsystem
': 1216 $temp = self::_getFile($locale, '/ldml/numbers/defaultNumberingSystem
', '', 'default'); 1219 case 'decimalnumber
': 1220 $temp = self::_getFile($locale, '/ldml/numbers/decimalFormats/decimalFormatLength/decimalFormat/pattern
', '', 'default'); 1223 case 'scientificnumber
': 1224 $temp = self::_getFile($locale, '/ldml/numbers/scientificFormats/scientificFormatLength/scientificFormat/pattern
', '', 'default'); 1227 case 'percentnumber
': 1228 $temp = self::_getFile($locale, '/ldml/numbers/percentFormats/percentFormatLength/percentFormat/pattern
', '', 'default'); 1231 case 'currencynumber
': 1232 $temp = self::_getFile($locale, '/ldml/numbers/currencyFormats/currencyFormatLength/currencyFormat/pattern
', '', 'default'); 1235 case 'nametocurrency
': 1236 $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' .
$value .
'\']/displayName
', '', $value); 1239 case 'currencytoname
': 1240 $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' .
$value .
'\']/displayName
', '', $value); 1241 $_temp = self::_getFile($locale, '/ldml/numbers/currencies/currency
', 'type
'); 1243 foreach ($_temp as $key => $keyvalue) { 1244 $val = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' . $key .
'\']/displayName
', '', $key); 1245 if (!isset($val[$key]) or ($val[$key] != $value)) { 1248 if (!isset($temp[$val[$key]])) { 1249 $temp[$val[$key]] = $key; 1251 $temp[$val[$key]] .= " " . $key; 1256 case 'currencysymbol
': 1257 $temp = self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\
'' .
$value .
'\']/symbol
', '', $value); 1261 $temp = self::_getFile($locale, '/ldml/posix/messages/
' . $value . 'str
', '', $value); 1264 case 'currencyfraction
': 1265 if (empty($value)) { 1268 $temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info[@iso4217=\
'' .
$value .
'\']
', 'digits
', 'digits
'); 1271 case 'currencyrounding
': 1272 if (empty($value)) { 1275 $temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/fractions/info[@iso4217=\
'' .
$value .
'\']
', 'rounding
', 'rounding
'); 1278 case 'currencytoregion
': 1279 $temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/region[@iso3166=\
'' .
$value .
'\']/currency
', 'iso4217
', $value); 1282 case 'regiontocurrency
': 1283 $_temp = self::_getFile('supplementalData
', '/supplementalData/currencyData/region
', 'iso3166
'); 1285 foreach ($_temp as $key => $keyvalue) { 1286 $val = self::_getFile('supplementalData
', '/supplementalData/currencyData/region[@iso3166=\
'' . $key .
'\']/currency
', 'iso4217
', $key); 1287 if (!isset($val[$key]) or ($val[$key] != $value)) { 1290 if (!isset($temp[$val[$key]])) { 1291 $temp[$val[$key]] = $key; 1293 $temp[$val[$key]] .= " " . $key; 1298 case 'regiontoterritory
': 1299 $temp = self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group[@type=\
'' .
$value .
'\']
', 'contains
', $value); 1302 case 'territorytoregion
': 1303 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group
', 'type
'); 1305 foreach ($_temp2 as $key => $found) { 1306 $_temp += self::_getFile('supplementalData
', '/supplementalData/territoryContainment/group[@type=\
'' . $key .
'\']
', 'contains
', $key); 1309 foreach($_temp as $key => $found) { 1310 $_temp3 = explode(" ", $found); 1311 foreach($_temp3 as $found3) { 1312 if ($found3 !== $value) { 1315 if (!isset($temp[$found3])) { 1316 $temp[$found3] = (string) $key; 1318 $temp[$found3] .= " " . $key; 1324 case 'scripttolanguage
': 1325 $temp = self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' .
$value .
'\']
', 'scripts
', $value); 1328 case 'languagetoscript
': 1329 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 1331 foreach ($_temp2 as $key => $found) { 1332 $_temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'scripts
', $key); 1335 foreach($_temp as $key => $found) { 1336 $_temp3 = explode(" ", $found); 1337 foreach($_temp3 as $found3) { 1338 if ($found3 !== $value) { 1341 if (!isset($temp[$found3])) { 1342 $temp[$found3] = (string) $key; 1344 $temp[$found3] .= " " . $key; 1350 case 'territorytolanguage
': 1351 $temp = self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' .
$value .
'\']
', 'territories
', $value); 1354 case 'languagetoterritory
': 1355 $_temp2 = self::_getFile('supplementalData
', '/supplementalData/languageData/language
', 'type
'); 1357 foreach ($_temp2 as $key => $found) { 1358 $_temp += self::_getFile('supplementalData
', '/supplementalData/languageData/language[@type=\
'' . $key .
'\']
', 'territories
', $key); 1361 foreach($_temp as $key => $found) { 1362 $_temp3 = explode(" ", $found); 1363 foreach($_temp3 as $found3) { 1364 if ($found3 !== $value) { 1367 if (!isset($temp[$found3])) { 1368 $temp[$found3] = (string) $key; 1370 $temp[$found3] .= " " . $key; 1376 case 'timezonetowindows
': 1377 $temp = self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone[@other=\
''.$value.
'\']
', 'type
', $value); 1380 case 'windowstotimezone
': 1381 $temp = self::_getFile('windowsZones
', '/supplementalData/windowsZones/mapTimezones/mapZone[@type=\
''.$value.
'\']
', 'other
', $value); 1384 case 'territorytotimezone
': 1385 $temp = self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone[@type=\
'' .
$value .
'\']
', 'territory
', $value); 1388 case 'timezonetoterritory
': 1389 $temp = self::_getFile('metaZones
', '/supplementalData/metaZones/mapTimezones/mapZone[@territory=\
'' .
$value .
'\']
', 'type
', $value); 1392 case 'citytotimezone
': 1393 $temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\
'' .
$value .
'\']/exemplarCity
', '', $value); 1396 case 'timezonetocity
': 1397 $_temp = self::_getFile($locale, '/ldml/dates/timeZoneNames/zone
', 'type
'); 1399 foreach($_temp as $key => $found) { 1400 $temp += self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\
'' . $key .
'\']/exemplarCity
', '', $key); 1401 if (!empty($temp[$key])) { 1402 if ($temp[$key] == $value) { 1403 $temp[$temp[$key]] = $key; 1410 case 'phonetoterritory
': 1411 $temp = self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory[@territory=\
'' .
$value .
'\']/telephoneCountryCode
', 'code
', $value); 1414 case 'territorytophone
': 1415 $_temp2 = self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory
', 'territory
'); 1417 foreach ($_temp2 as $key => $found) { 1418 $_temp += self::_getFile('telephoneCodeData
', '/supplementalData/telephoneCodeData/codesByTerritory[@territory=\
'' . $key .
'\']/telephoneCountryCode
', 'code
', $key); 1421 foreach($_temp as $key => $found) { 1422 $_temp3 = explode(" ", $found); 1423 foreach($_temp3 as $found3) { 1424 if ($found3 !== $value) { 1427 if (!isset($temp[$found3])) { 1428 $temp[$found3] = (string) $key; 1430 $temp[$found3] .= " " . $key; 1436 case 'numerictoterritory
': 1437 $temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@type=\
''.$value.
'\']
', 'numeric
', $value); 1440 case 'territorytonumeric
': 1441 $temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@numeric=\
''.$value.
'\']
', 'type
', $value); 1444 case 'alpha3toterritory
': 1445 $temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@type=\
''.$value.
'\']
', 'alpha3
', $value); 1448 case 'territorytoalpha3
': 1449 $temp = self::_getFile('supplementalData
', '/supplementalData/codeMappings/territoryCodes[@alpha3=\
''.$value.
'\']
', 'type
', $value); 1452 case 'postaltoterritory
': 1453 $temp = self::_getFile('postalCodeData
', '/supplementalData/postalCodeData/postCodeRegex[@territoryId=\
'' .
$value .
'\']
', 'territoryId
'); 1456 case 'numberingsystem
': 1457 $temp = self::_getFile('numberingSystems
', '/supplementalData/numberingSystems/numberingSystem[@
id=\
'' . strtolower(
$value) .
'\']
', 'digits
', $value); 1460 case 'chartofallback
': 1461 $_temp = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character
', 'value'); 1462 foreach ($_temp as $key => $keyvalue) { 1463 $temp2 = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character[@
value=\
'' . $key .
'\']/substitute
', '', $key); 1464 if (current($temp2) == $value) { 1470 $temp = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character[@
value=\
'' .
$value .
'\']/substitute
', '', $value); 1473 case 'fallbacktochar
': 1474 $temp = self::_getFile('characters
', '/supplementalData/characters/character-fallback/character[@
value=\
'' .
$value .
'\']/substitute
', ''); 1477 case 'localeupgrade
': 1478 $temp = self::_getFile('likelySubtags
', '/supplementalData/likelySubtags/likelySubtag[@from=\
'' .
$value .
'\']
', 'to
', $value); 1482 $temp = self::_getFile($locale, '/ldml/units/unitLength/unit[@type=\
'' .
$value[0] .
'\']/unitPattern[@count=\
'' .
$value[1] .
'\']
', ''); 1485 case 'parentlocale
': 1486 if (false === $value) { 1489 $temp = self::_getFile('supplementalData
', "/supplementalData/parentLocales/parentLocale[contains(@locales, '" . $value . "')]", 'parent
', 'parent
'); 1493 #require_once 'Zend/Locale/Exception.php
'; 1494 throw new Zend_Locale_Exception("Unknown detail ($path) for parsing locale data."); 1498 if (is_array($temp)) { 1499 $temp = current($temp); 1501 if (isset(self::$_cache)) { 1502 if (self::$_cacheTags) { 1503 self::$_cache->save( serialize($temp), $id, array('Zend_Locale')); 1505 self::$_cache->save( serialize($temp), $id); 1517 public static function getCache() 1519 return self::$_cache; 1527 public static function setCache(Zend_Cache_Core $cache) 1529 self::$_cache = $cache; 1530 self::_getTagSupportForCache(); 1538 public static function hasCache() 1540 if (self::$_cache !== null) { 1552 public static function removeCache() 1554 self::$_cache = null; 1562 public static function clearCache() 1564 if (self::$_cacheTags) { 1565 self::$_cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('Zend_Locale')); 1567 self::$_cache->clean(Zend_Cache::CLEANING_MODE_ALL); 1576 public static function disableCache($flag) 1578 self::$_cacheDisabled = (boolean) $flag; 1586 private static function _getTagSupportForCache() 1588 $backend = self::$_cache->getBackend(); 1589 if ($backend instanceof Zend_Cache_Backend_ExtendedInterface) { 1590 $cacheOptions = $backend->getCapabilities(); 1591 self::$_cacheTags = $cacheOptions['tags
']; 1593 self::$_cacheTags = false; 1596 return self::$_cacheTags; 1605 protected static function _filterCacheId($value)
$block setTitle( 'CMS Block Title') -> setIdentifier('fixture_block') ->setContent('< h1 >Fixture Block Title</h1 >< a href=" store url</a><p> Config value
static getList($locale, $path, $value=false)
static scanFile($file, DOMDocument $dom=null)
static getContent($locale, $path, $value=false)
defined('MTF_BOOT_FILE')||define('MTF_BOOT_FILE' __FILE__
static _filterCacheId($value)
static isLocale($locale, $strict=false, $compatible=true)
static factory($frontend, $backend, $frontendOptions=array(), $backendOptions=array(), $customFrontendNaming=false, $customBackendNaming=false, $autoload=false)