Commit 113a82bc authored by Bong Cosca's avatar Bong Cosca
Browse files

Bug fix: LANGUAGE/LOCALES handling

parent c1d1da35
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -631,7 +631,7 @@ final class Base {
	function format() {
		$args=func_get_args();
		$val=array_shift($args);
		setlocale(LC_ALL,$this->locales);
		setlocale(LC_ALL,str_replace('-','_',$this->locales));
		// Get formatting rules
		$conv=localeconv();
		return preg_replace_callback(
@@ -731,16 +731,16 @@ final class Base {
	*	@param $code string
	**/
	function language($code) {
		$code=str_replace('-','_',preg_replace('/;q=.+?(?=,|$)/','',$code));
		$code=preg_replace('/;q=.+?(?=,|$)/','',$code);
		$code.=($code?',':'').$this->fallback;
		$this->languages=array();
		foreach (array_reverse(explode(',',$code)) as $lang) {
			if (preg_match('/^(\w{2})(?:_(\w{2}))?\b/i',$lang,$parts)) {
			if (preg_match('/^(\w{2})(?:-(\w{2}))?\b/i',$lang,$parts)) {
				// Generic language
				array_unshift($this->languages,$parts[1]);
				if (isset($parts[2])) {
					// Specific language
					$parts[0]=$parts[1].'_'.($parts[2]=strtoupper($parts[2]));
					$parts[0]=$parts[1].'-'.($parts[2]=strtoupper($parts[2]));
					array_unshift($this->languages,$parts[0]);
				}
			}
@@ -750,14 +750,14 @@ final class Base {
		$windows=preg_match('/^win/i',PHP_OS);
		foreach ($this->languages as $locale) {
			if ($windows) {
				$parts=explode('_',$locale);
				$parts=explode('-',$locale);
				$locale=@constant('ISO::LC_'.$parts[0]);
				if (isset($parts[1]) &&
					$country=@constant('ISO::CC_'.strtolower($parts[1])))
					$locale.='_'.$country;
					$locale.='-'.$country;
			}
			$this->locales[]=$locale;
			$this->locales[]=$locale.'.'.$this->hive['ENCODING'];
			$this->locales[]=$locale.'.'.ini_get('default_charset');
		}
		return implode(',',$this->languages);
	}