2
0
Преглед на файлове

Extends Zend_Locale_Data::getContent for reading parent locales

Frank Brückner преди 10 години
родител
ревизия
42615575be
променени са 2 файла, в които са добавени 31 реда и са изтрити 0 реда
  1. 7 0
      library/Zend/Locale/Data.php
  2. 24 0
      tests/Zend/Locale/DataTest.php

+ 7 - 0
library/Zend/Locale/Data.php

@@ -1474,6 +1474,13 @@ class Zend_Locale_Data
                 $temp = self::_getFile($locale, '/ldml/units/unitLength/unit[@type=\'' . $value[0] . '\']/unitPattern[@count=\'' . $value[1] . '\']', '');
                 break;
 
+            case 'parentlocale':
+                if (false === $value) {
+                    $value = $locale;
+                }
+                $temp = self::_getFile('supplementalData', "/supplementalData/parentLocales/parentLocale[contains(@locales, '" . $value . "')]", 'parent', 'parent');
+                break;
+
             default :
                 require_once 'Zend/Locale/Exception.php';
                 throw new Zend_Locale_Exception("Unknown detail ($path) for parsing locale data.");

+ 24 - 0
tests/Zend/Locale/DataTest.php

@@ -7254,4 +7254,28 @@ class Zend_Locale_DataTest extends PHPUnit_Framework_TestCase
             $this->fail($e->getMessage());
         }
     }
+
+    /**
+     * @group GH-516
+     */
+    public function testGetParentLocale()
+    {
+        // Tests only with locale
+        $result = Zend_Locale_Data::getContent('pa_Arab', 'parentlocale');
+        $this->assertEquals('root', $result);
+        $result = Zend_Locale_Data::getContent('en_CK', 'parentlocale');
+        $this->assertEquals('en_001', $result);
+        $result = Zend_Locale_Data::getContent('en_JE', 'parentlocale');
+        $this->assertEquals('en_GB', $result);
+        $result = Zend_Locale_Data::getContent('es_AR', 'parentlocale');
+        $this->assertEquals('es_419', $result);
+        $result = Zend_Locale_Data::getContent('pt_CV', 'parentlocale');
+        $this->assertEquals('pt_PT', $result);
+        $result = Zend_Locale_Data::getContent('zh_Hant_MO', 'parentlocale');
+        $this->assertEquals('zh_Hant_HK', $result);
+
+        // Test with value
+        $result = Zend_Locale_Data::getContent('de_DE', 'parentlocale', 'zh_Hant_MO');
+        $this->assertEquals('zh_Hant_HK', $result);
+    }
 }