我希望你能够帮忙翻译一下关于IT技术的内容。需要翻译的内容是如何通过国家名称查找国家代码,例如,当我有了 "荷兰" 这个国家名称时,我需要得到 "NL" 这个国家代码。
我知道有一种方法可以通过代码来查找名称:
$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code)
但我需要相反的情况。那么Magento中有没有解决这个问题的方法?
我希望你能够帮忙翻译一下关于IT技术的内容。需要翻译的内容是如何通过国家名称查找国家代码,例如,当我有了 "荷兰" 这个国家名称时,我需要得到 "NL" 这个国家代码。
我知道有一种方法可以通过代码来查找名称:
$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code)
$countryId = '';
$countryCollection = Mage::getModel('directory/country')->getCollection();
foreach ($countryCollection as $country) {
if ($countryName == $country->getName()) {
$countryId = $country->getCountryId();
break;
}
}
echo $countryId;
这对我很有效
$list = Mage::app()->getLocale()->getCountryTranslationList(); $list=array_flip($list);
echo $list['美国'];
有一种方法可以在不加载国家集合的情况下获取国家ID。由于所有国家ID与名称的映射都存储在XML中,因此您可以通过locale对象访问该XML。
$list = Mage::app()->getLocale()->getCountryTranslationList();
foreach ($list as $id => $name) {
if ($name == $countryName) {
return $id;
}
}
$oldCode = Mage::app()->getLocale()->getLocaleCode();
Mage::app()->getLocale()->setLocaleCode('en_US');
...
...
...
Mage::app()->getLocale()->setLocaleCode($oldCode);
$countryId = array_search($countryName, \Zend_Locale::getTranslationList('territory'));
国家集合
<select title="Country" class="validate-select" id="billing:country_id" name="billing[country_id]">
<option value=""> </option>
<?php
$collection = Mage::getModel('directory/country')->getCollection();
foreach ($collection as $country)
{
?>
<option value="<?php echo $country->getId(); ?>"><?php echo $country->getName(); ?></option>
<?php
}
?>
</select>