/** * Sets a new fallback locale which will be used when no locale can be detected * If provided you can set a quality between 0 and 1 (or 2 and 100) * which represents the percent of quality the browser * requested within HTTP * * @param string|\Zend\Locale\Locale $locale Locale to set * @param float $quality The quality to set from 0 to 1 * @throws \Zend\Locale\Exception\InvalidArgumentException When a autolocale was given * @throws \Zend\Locale\Exception\InvalidArgumentException When a unknown locale was given * @return void */ public static function setFallback($locale, $quality = 1) { if ($locale === 'auto' or $locale === 'root' or $locale === 'fallback' or $locale === 'fixed' or $locale === 'environment' or $locale === 'browser') { throw new Exception\InvalidArgumentException('Only fully qualified locales can be used as fallback!'); } if ($quality < 0.1 or $quality > 100) { throw new Exception\InvalidArgumentException("Quality must be between 0.1 and 100"); } if ($quality > 1) { $quality /= 100; } $locale = self::_prepareLocale($locale); if (isset(self::$_localeData[(string) $locale]) === true) { self::$_fallback = array((string) $locale => $quality); } else { $elocale = explode('_', (string) $locale); if (isset(self::$_localeData[$elocale[0]]) === true) { self::$_fallback = array($elocale[0] => $quality); } else { throw new Exception\InvalidArgumentException("Unknown locale '" . (string) $locale . "' can not be set as fallback!"); } } if (empty(self::$_fixed)) { self::$_auto = self::getBrowser() + self::getEnvironment() + self::getFallback(); } }