Просмотр исходного кода

[ZF-7500] Zend_Locale:

- fixed returned error message on setDefault
- added better locale detection to setDefault

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17478 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 лет назад
Родитель
Сommit
d4cef68b3d
2 измененных файлов с 13 добавлено и 4 удалено
  1. 5 4
      library/Zend/Locale.php
  2. 8 0
      tests/Zend/LocaleTest.php

+ 5 - 4
library/Zend/Locale.php

@@ -251,7 +251,7 @@ class Zend_Locale
     }
 
     /**
-     * Sets a new default locale
+     * Sets a new default 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
@@ -279,12 +279,13 @@ class Zend_Locale
             $quality /= 100;
         }
 
+        $locale = self::_prepareLocale($locale);
         if (isset(self::$_localeData[(string) $locale]) === true) {
             self::$_default = array((string) $locale => $quality);
         } else {
-            $locale = explode('_', (string) $locale);
-            if (isset(self::$_localeData[$locale[0]]) === true) {
-                self::$_default = array($locale[0] => $quality);
+            $elocale = explode('_', (string) $locale);
+            if (isset(self::$_localeData[$elocale[0]]) === true) {
+                self::$_default = array($elocale[0] => $quality);
             } else {
                 require_once 'Zend/Locale/Exception.php';
                 throw new Zend_Locale_Exception("Unknown locale '" . (string) $locale . "' can not be set as default!");

+ 8 - 0
tests/Zend/LocaleTest.php

@@ -716,6 +716,14 @@ class Zend_LocaleTest extends PHPUnit_Framework_TestCase
         } catch (Zend_Locale_Exception $e) {
             $this->fail();
         }
+
+        try {
+            Zend_LocaleTestHelper::setDefault('de-AT', 90);
+            $locale = new Zend_LocaleTestHelper();
+            $this->assertTrue($locale instanceof Zend_Locale);
+        } catch (Zend_Locale_Exception $e) {
+            $this->fail();
+        }
     }
 
     /**