コード例 #1
0
ファイル: Data.php プロジェクト: vojtajina/sitellite
 /**
  * Read the LDML file, get a single path defined value
  *
  * @param  string $locale
  * @param  string $path
  * @param  string $value
  * @return array of string
  * @access public
  */
 public static function getContent($locale, $path, $value = false)
 {
     self::$_list = array();
     if (empty($locale)) {
         $locale = new Zend_Locale();
     }
     if (!Zend_Locale::isLocale($locale)) {
         throw new Zend_Locale_Exception("Locale ({$locale}) is a unknown locale");
     }
     if ($locale instanceof Zend_Locale) {
         $locale = $locale->toString();
     }
     switch (strtolower($path)) {
         case 'languagelist':
             self::_getFile($locale, '/ldml/localeDisplayNames/languages/language', 'type');
             break;
         case 'language':
             self::_getFile($locale, '/ldml/localeDisplayNames/languages/language[@type=\'' . $value . '\']', 'type');
             break;
         case 'scriptlist':
             self::_getFile($locale, '/ldml/localeDisplayNames/scripts/script', 'type');
             break;
         case 'script':
             self::_getFile($locale, '/ldml/localeDisplayNames/scripts/script[@type=\'' . $value . '\']', 'type');
             break;
         case 'territorylist':
             self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory', 'type');
             break;
         case 'territory':
             self::_getFile($locale, '/ldml/localeDisplayNames/territories/territory[@type=\'' . $value . '\']', 'type');
             break;
         case 'variantlist':
             self::_getFile($locale, '/ldml/localeDisplayNames/variants/variant', 'type');
             break;
         case 'variant':
             self::_getFile($locale, '/ldml/localeDisplayNames/variants/variant[@type=\'' . $value . '\']', 'type');
             break;
         case 'keylist':
             self::_getFile($locale, '/ldml/localeDisplayNames/keys/key', 'type');
             break;
         case 'key':
             self::_getFile($locale, '/ldml/localeDisplayNames/keys/key[@type=\'' . $value . '\']', 'type');
             break;
         case 'typelist':
             self::_getFile($locale, '/ldml/localeDisplayNames/types/type', 'type');
             break;
         case 'type':
             if ($value == 'calendar' or $value == 'collation' or $value == 'currency') {
                 self::_getFile($locale, '/ldml/localeDisplayNames/types/type[@key=\'' . $value . '\']', 'type');
             } else {
                 self::_getFile($locale, '/ldml/localeDisplayNames/types/type[@type=\'' . $value . '\']', 'type');
             }
             break;
         case 'orientation':
             self::_getFile($locale, '/ldml/layout/orientation', 'lines', 'lines');
             self::_getFile($locale, '/ldml/layout/orientation', 'characters', 'characters');
             break;
         case 'casing':
             self::_getFile($locale, '/ldml/layout/inList', 'casing', 'casing');
             break;
         case 'characters':
             self::_getFile($locale, '/ldml/characters/exemplarCharacters');
             break;
         case 'delimiters':
             self::_getFile($locale, '/ldml/delimiters/quotationStart', '', 'quoteStart');
             self::_getFile($locale, '/ldml/delimiters/quotationEnd', '', 'quoteEnd');
             self::_getFile($locale, '/ldml/delimiters/alternateQuotationStart', '', 'quoteStartAlt');
             self::_getFile($locale, '/ldml/delimiters/alternateQuotationEnd', '', 'quoteEndAlt');
             break;
         case 'measurement':
             self::_getFile($locale, '/ldml/measurement/measurementSystem', 'type', 'measurement');
             break;
         case 'papersize':
             self::_getFile($locale, '/ldml/measurement/paperSize/height', '', 'height');
             self::_getFile($locale, '/ldml/measurement/paperSize/width', '', 'width');
             break;
         case 'datechars':
             self::_getFile($locale, '/ldml/dates/localizedPatternChars', '', 'chars');
             break;
         case 'defcalendarformat':
             self::_getFile($locale, '/ldml/dates/calendars/default', 'type', 'default');
             break;
         case 'defmonthformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/months/monthContext[@type=\'format\']/default', 'type', 'default');
             break;
         case 'monthlist':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/months/monthContext[@type=\'' . $value[1] . '\']/monthWidth[@type=\'' . $value[2] . '\']/month', 'type');
             break;
         case 'month':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/months/monthContext[@type=\'' . $value[1] . '\']/monthWidth[@type=\'' . $value[2] . '\']/month[@type=\'' . $value[3] . '\']', 'type');
             break;
         case 'defdayformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/days/dayContext[@type=\'format\']/default', 'type', 'default');
             break;
         case 'daylist':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/days/dayContext[@type=\'' . $value[1] . '\']/dayWidth[@type=\'' . $value[2] . '\']/day', 'type');
             break;
         case 'day':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/days/dayContext[@type=\'' . $value[1] . '\']/dayWidth[@type=\'' . $value[2] . '\']/day[@type=\'' . $value[3] . '\']', 'type');
             break;
         case 'week':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/minDays', 'count', 'mindays');
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/firstDay', 'day', 'firstday');
             break;
         case 'weekend':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/weekendStart', 'day', 'startday');
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/weekendStart', 'time', 'starttime');
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/weekendEnd', 'day', 'endday');
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/week/weekendEnd', 'time', 'endtime');
             break;
         case 'daytime':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/am', '', 'am');
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/pm', '', 'pm');
             break;
         case 'erashortlist':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/eras/eraAbbr/era', 'type');
             break;
         case 'erashort':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/eras/eraAbbr/era[@type=\'' . $value[1] . '\']', 'type');
             break;
         case 'eralist':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/eras/eraNames/era', 'type');
             break;
         case 'era':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/eras/eraNames/era[@type=\'' . $value[1] . '\']', 'type');
             break;
         case 'defdateformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateFormats/default', 'choice', 'default');
             break;
         case 'dateformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/dateFormats/dateFormatLength[@type=\'' . $value[1] . '\']/dateFormat/pattern', '', 'pattern');
             break;
         case 'deftimeformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/timeFormats/default', 'choice', 'default');
             break;
         case 'timeformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/timeFormats/timeFormatLength[@type=\'' . $value[1] . '\']/timeFormat/pattern', '', 'pattern');
             break;
         case 'datetimeformat':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/dateTimeFormats/dateTimeFormatLength/dateTimeFormat/pattern', '', 'pattern');
             break;
         case 'calendarfields':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/field[@type=\'' . $key . '\']/displayName', '', $key);
             }
             break;
         case 'relativedates':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value . '\']/fields/relative', 'type');
             break;
         case 'relativedate':
             self::_getFile($locale, '/ldml/dates/calendars/calendar[@type=\'' . $value[0] . '\']/fields/relative[@type=\'' . $value[1] . '\']', 'type');
             break;
         case 'timezones':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/exemplarCity', '', $key);
             }
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             break;
         case 'timezone':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $value . '\']/exemplarCity', '', $value);
             break;
         case 'timezonestandard':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/long/standard', '', $key);
             }
             break;
         case 'timezonestandardshort':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/short/standard', '', $key);
             }
             break;
         case 'timezonedaylight':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/long/daylight', '', $key);
             }
             break;
         case 'timezonedaylightshort':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/zone', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/dates/timeZoneNames/zone[@type=\'' . $key . '\']/short/daylight', '', $key);
             }
             break;
         case 'timezoneformat':
             self::_getFile($locale, '/ldml/dates/timeZoneNames/hourFormat', '', 'hourformat');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/hoursFormat', '', 'hoursformat');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/gmtFormat', '', 'gmtformat');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/regionFormat', '', 'regionformat');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/fallbackFormat', '', 'fallbackformat');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/abbreviationFallback', 'type', 'abbreviationfallback');
             self::_getFile($locale, '/ldml/dates/timeZoneNames/preferenceOrdering', 'type', 'preferenceOrdering');
             break;
         case 'numbersymbols':
             self::_getFile($locale, '/ldml/numbers/symbols/decimal', '', 'decimal');
             self::_getFile($locale, '/ldml/numbers/symbols/group', '', 'group');
             self::_getFile($locale, '/ldml/numbers/symbols/list', '', 'list');
             self::_getFile($locale, '/ldml/numbers/symbols/percentSign', '', 'percent');
             self::_getFile($locale, '/ldml/numbers/symbols/nativeZeroDigit', '', 'zero');
             self::_getFile($locale, '/ldml/numbers/symbols/patternDigit', '', 'pattern');
             self::_getFile($locale, '/ldml/numbers/symbols/plusSign', '', 'plus');
             self::_getFile($locale, '/ldml/numbers/symbols/minusSign', '', 'minus');
             self::_getFile($locale, '/ldml/numbers/symbols/exponential', '', 'exponent');
             self::_getFile($locale, '/ldml/numbers/symbols/perMille', '', 'mille');
             self::_getFile($locale, '/ldml/numbers/symbols/infinity', '', 'infinity');
             self::_getFile($locale, '/ldml/numbers/symbols/nan', '', 'nan');
             break;
         case 'decimalnumberformat':
             self::_getFile($locale, '/ldml/numbers/decimalFormats/decimalFormatLength/decimalFormat/pattern', '', 'default');
             break;
         case 'scientificnumberformat':
             self::_getFile($locale, '/ldml/numbers/scientificFormats/scientificFormatLength/scientificFormat/pattern', '', 'default');
             break;
         case 'percentnumberformat':
             self::_getFile($locale, '/ldml/numbers/percentFormats/percentFormatLength/percentFormat/pattern', '', 'default');
             break;
         case 'currencyformat':
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencyFormatLength/currencyFormat/pattern', '', 'default');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/beforeCurrency/currencyMatch', '', 'beforMatch');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/beforeCurrency/surroundingMatch', '', 'beforSurround');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/beforeCurrency/insertBetween', '', 'beforBetween');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/afterCurrency/currencyMatch', '', 'afterMatch');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/afterCurrency/surroundingMatch', '', 'afterSurround');
             self::_getFile($locale, '/ldml/numbers/currencyFormats/currencySpacing/afterCurrency/insertBetween', '', 'afterBetween');
             break;
         case 'currencynames':
             self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/displayName', '', $key);
             }
             break;
         case 'currencyname':
             self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $value . '\']/displayName', '', $value);
             break;
         case 'currencysymbols':
             self::_getFile($locale, '/ldml/numbers/currencies/currency', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $key . '\']/symbol', '', $key);
             }
             break;
         case 'currencysymbol':
             self::_getFile($locale, '/ldml/numbers/currencies/currency[@type=\'' . $value . '\']/symbol', '', $value);
             break;
         case 'questionstrings':
             self::_getFile($locale, '/ldml/posix/messages/yesstr', '', 'yes');
             self::_getFile($locale, '/ldml/posix/messages/nostr', '', 'no');
             self::_getFile($locale, '/ldml/posix/messages/yesexpr', '', 'yesexpr');
             self::_getFile($locale, '/ldml/posix/messages/noexpr', '', 'noexpr');
             break;
         case 'currencyfraction':
             self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $value . '\']', 'digits', 'digits');
             self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $value . '\']', 'rounding', 'rounding');
             break;
         case 'currencydigitlist':
             self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info', 'iso4217');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $key . '\']', 'digits', $key);
             }
             break;
         case 'currencyroundinglist':
             self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info', 'iso4217');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/currencyData/fractions/info[@iso4217=\'' . $key . '\']', 'rounding', $key);
             }
             break;
         case 'currencyforregion':
             self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $value . '\']/currency', 'iso4217');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $keyvalue) {
                 self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $value . '\']/currency[@iso4217=\'' . $key . '\']', 'from', $key);
             }
             break;
         case 'currencyforregionlist':
             self::_getFile('supplementalData', '/supplementalData/currencyData/region', 'iso3166');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/currencyData/region[@iso3166=\'' . $key . '\']/currency', 'iso4217', $key);
             }
             break;
         case 'regionforterritory':
             self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $value . '\']', 'contains', $value);
             break;
         case 'regionforterritorylist':
             self::_getFile('supplementalData', '/supplementalData/territoryContainment/group', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/territoryContainment/group[@type=\'' . $key . '\']', 'contains', $key);
             }
             break;
         case 'scriptforlanguage':
             self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $value . '\']', 'scripts', $value);
             break;
         case 'scriptforlanguagelist':
             self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'scripts', $key);
             }
             break;
         case 'territoryforlanguage':
             self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $value . '\']', 'territories', $value);
             break;
         case 'territoryforlanguagelist':
             self::_getFile('supplementalData', '/supplementalData/languageData/language', 'type');
             $_temp = self::$_list;
             self::$_list = array();
             foreach ($_temp as $key => $found) {
                 self::_getFile('supplementalData', '/supplementalData/languageData/language[@type=\'' . $key . '\']', 'territories', $key);
             }
             break;
         default:
             throw new Zend_Locale_Exception("Unknown detail ({$path}) for parsing locale data.");
             break;
     }
     return self::$_list;
 }