Magento:通过国家名称获取国家代码

4

我希望你能够帮忙翻译一下关于IT技术的内容。需要翻译的内容是如何通过国家名称查找国家代码,例如,当我有了 "荷兰" 这个国家名称时,我需要得到 "NL" 这个国家代码。

我知道有一种方法可以通过代码来查找名称:

$country_name = Mage::app()->getLocale()->getCountryTranslation($country_code) 

但我需要相反的情况。那么Magento中有没有解决这个问题的方法?

5个回答

5

请勿加载国家集合,只需通过语言环境访问该XML:https://dev59.com/questions/Tnvaa4cB1Zd3GeqPI-Oq#31876032 - Arkadij Kuzhel

5

这对我很有效

$list = Mage::app()->getLocale()->getCountryTranslationList(); $list=array_flip($list); echo $list['美国'];

2

有一种方法可以在不加载国家集合的情况下获取国家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);

1
在Magento 2中,缺乏简单的流程,因此我建议您使用Zend框架,例如:
$countryId = array_search($countryName, \Zend_Locale::getTranslationList('territory'));

不要忘记确保你的国家名称大写。

0

国家集合

        <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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接