【问题标题】:Strategy for storing and displaying form dropdown data for provinces, states, prefixes?存储和显示省、州、前缀表单下拉数据的策略?
【发布时间】:2010-01-06 03:12:03
【问题描述】:
我目前正在从以数组形式存储国家、州和省列表的类迁移到以 ldml xml files 形式使用 Zend 的区域设置数据。这些 ldml 文件提供了国家、货币、语言的本地化列表 - 所以我不确定我应该在哪里存储美国各州、(加拿大各省)、前缀 - 我在想可能只是创建一个通用 xml 文件并将其存储在同一个文件中目录作为 ldml 文件,但有疑问,因为它不会真正本地化,因为我会用英文存储它。
我应该将其存储在通用 xml 文件中,还是可能更新每个语言环境文件(例如 en.xml )并附加它们?后者可能不值得工作,这就是为什么我倾向于只使用general.xml 或dropdown-data.xml。
至于生成下拉选项,我想我可以说,抓取美国所有州,将数组附加到加拿大各省,然后将其附加一个“其他”选项 - 这似乎是正确的做法吗?
【问题讨论】:
标签:
php
zend-framework
internationalization
zend-locale
【解决方案1】:
我也遇到了这个问题。我混合使用 Zend_Locale 和自定义 xml 文件。
Zend_Locale 用于生成国家列表:
$locale = new Zend_Locale(Zend_Locale::BROWSER);
$countries = $locale->getTranslationList('Territory', Zend_Locale::BROWSER, 2);
asort($countries, SORT_LOCALE_STRING);
// unset invalid countries
unset($countries['SU'], $countries['ZZ'], $countries['IM'], $countries['JE'], $countries['VD']);
然后我的自定义 XML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<countries>
<AD>
<region>Andorra</region>
<region>Parròquia de Canillo</region>
<region>Parròquia d'Encamp</region>
<region>Parròquia de la Massana</region>
<countries> 的每个子元素都是一个 2 字母的国家/地区代码,对应于 $countries 的键值。然后我使用 ajax/php/xpath 在更改国家/地区下拉值时重新填充州/省下拉列表。
请随时在此处下载我的 XML 文件:http://gregan.org/provinces.xml
我不记得我是从哪里得到原始数据的,我也不保证它的有效性
【解决方案2】:
如果您真的很有野心,您可以尝试设计/贡献一些东西回 CLDR,其中#1529 与此类数据有关。