magento 存储国家全名的地方
Posted
技术标签:
【中文标题】magento 存储国家全名的地方【英文标题】:where magento stores country full name 【发布时间】:2014-09-15 22:47:34 【问题描述】:我花了几个小时寻找 magento 存储全县名称的位置。 我们可以使用此代码获取国家/地区的完整列表:
$_countries = Mage::getResourceModel('directory/country_collection')
->loadData()
->toOptionArray(false);
这将返回一个包含国家代码和名称的数组,我调查了目录模块,发现这个调用从表中获取数据
目录县
但是这个表没有完整的县名!那么它存储在哪里呢? 以及如何使用该调用检索它?
提前致谢。
【问题讨论】:
为什么需要表名。目的是什么? 【参考方案1】:好的,以弥补我的错误答案。以下是它的工作原理:
/lib/Zend/Locale/Data/en.xml - 如果您的商店是英文的,则读取同一目录中的另一个 xml。每个国家都在那里,其代码在 xml 标签下<territory>
使用 Zend_Cache_Core 类缓存 xml。
/lib/Zend/Locale.php - 函数 getTranslation 调用 lib/Zend/Cache/Core.php 类 从缓存中加载。
示例:如果您在 en.xml 中更改某个国家/地区的名称并清除 magento 缓存。当您再次调用您的代码时,您将看到更改。
【讨论】:
我也在用en.xml,也改了也没出现,你试过了吗?看看我是否修改了错误的文件 这些不是语言名称吗?【参考方案2】:完整的国家名称不存储在数据库中。 Magento 使用内置的 Zend 功能。
查看文件:lib/Zend/Locale/Data/Translation.php
查看完整列表。
【讨论】:
是的,这个文件包含完整列表..但我修改了一个国家名称并打印出所有国家..更改没有出现:(我不明白为什么!!!!!(我确保浏览器中没有缓存)【参考方案3】:使用 Zend_Local 翻译。
<?php
$code = 'EN';
echo Mage::app()->getLocale()->getTranslation($code, 'Territory', null, 2);
?>
使用表“directory_country”中的“iso2_code”列作为您的 $code。
【讨论】:
【参考方案4】:Magneto 仅将国家代码存储在 DB 中,并依赖 Zend 的 Locale 模块中的名称来为不同的语言环境提供翻译名称。
通过toOptionArray
方法,它调用Zend_Locale
类来获取转换后的值。
参考$name = Mage::app()->getLocale()->getCountryTranslation($data['value']);
,它会到达Mage_Core_Model_Locale
,然后是Zend_Locale
。
通过Zend_Locale_Data::getContent()
line# 962, 963中的switch case语句来决定读取数据中的哪个节点
Magento 会缓存名称,因此如果您对 XML
文件进行任何更改,请确保清理您的缓存文件夹以获取所需内容。
【讨论】:
以上是关于magento 存储国家全名的地方的主要内容,如果未能解决你的问题,请参考以下文章
Magento:为国家/地区 magento 设置默认商店视图