/** * Test that locale names that have been dropped from CLDR continue to * work. */ public function testAliases() { $locale = new Zend_Locale('zh_CN'); $this->assertEquals(true, $locale->isLocale('zh_CN')); $this->assertEquals('zh', $locale->getLanguage()); $this->assertEquals('CN', $locale->getRegion()); $this->assertEquals(true, Zend_Locale::isAlias($locale)); $this->assertEquals(true, Zend_Locale::isAlias('zh_CN')); $this->assertEquals('zh_Hans_CN', Zend_Locale::getAlias('zh_CN')); $locale = new Zend_Locale('zh_Hans_CN'); $this->assertEquals(true, $locale->isLocale('zh_Hans_CN')); $this->assertEquals('zh', $locale->getLanguage()); $this->assertEquals('CN', $locale->getRegion()); $this->assertEquals(false, Zend_Locale::isAlias('zh_Hans_CN')); $this->assertEquals('zh_Hans_CN', Zend_Locale::getAlias('zh_Hans_CN')); }
/** * Internal function for checking the locale * * @param string|Zend_Locale $locale Locale to check * @return string * @throws Zend_Locale_Exception */ private static function _checkLocale($locale) { if (empty($locale)) { $locale = new Zend_Locale(); } if (!Zend_Locale::isLocale((string) $locale, null, false)) { // require_once 'Zend/Locale/Exception.php'; throw new Zend_Locale_Exception("Locale (" . (string) $locale . ") is a unknown locale"); } if (Zend_Locale::isAlias($locale)) { // Return a valid CLDR locale so that the XML file can be loaded. return Zend_Locale::getAlias($locale); } return (string) $locale; }
/** * Get all labels of the attributes * * @return string[] with 'locale' => 'label' */ public function getLabels() { if (isset($this->_labels)) { return $this->_labels; } $labelsNode = $this->_xmlElement->{'labels'}; $labels = []; if ($labelsNode->count() > 0) { foreach ($labelsNode->children() as $labelNode) { /** @var SimpleXmlElement $labelNode */ $locale = $labelNode->getName(); if (Zend_Locale::isAlias($locale)) { $locale = Zend_Locale::getAlias($locale); } $label = (string) $labelNode; $labels[$locale] = $label; } } $this->_labels = $labels; return $labels; }