我正在尝试提供下拉菜单,以便用户可以在多语言Web应用程序中选择他们的国家/地区和州。
我能够从unicode.org的cldr文件中提取各种语言的国家/地区列表以及这些国家/地区的名称。
目前这些都存储在单独的文件中(我有en.php,es.php,fr.php等文件)。
虽然这似乎并不太困难,但我无法以本地化的形式获得行政区划(州/省/县)名单。基本上,如果这个人正在使用该应用程序的法语版本(fr_fr),我希望当他选择“法国”作为他的国家时,各州法国部门将填充各州法律部门。
我在geonames.org上找到了一些数据:http://www.geonames.org/GB/administrative-division-united-kingdom.html但所有内容似乎都是英文的,所以我无法提供本地化的状态。此外,像英国这样的一些国家在“行政区划”中有两组数据,这可能会使数据自动成为问题。
类似的,如果有人使用的是日文版,那么县下拉应该包含日语的县。至于其他国家,我认为将所有行政区划翻译成日语是不可行的,因此默认为英语是正常的。
此外,各个国家/地区对行政区划有不同的条款(州/地区/省/县和我可能错过的其他一些条款。我希望将这些数据放在某个地方,以便当有人说,日本,而不是标签为“州”,他被标记为“县”。
我遇到的另一个问题是存储所有数据的位置。目前,我倾向于将行政区划(州)和标签(州,县等)存储在包含区域设置(en_US.php,en_GB.php等)的更具体文件中。
有没有人在项目上处理过这样的事情?我很想听听你的建议/意见。此外,如果有人可以提供我可以获得本地化状态的来源,那将会很棒。
修改
答案 0 :(得分:4)
你在使用州/省的数据是什么?如果是邮寄,请记住,许多国家/地区的邮寄地址不需要(通常不会给出)州/省,如果您在不需要时提出要求,您只会烦扰用户。
邮政编码对于邮件更重要,而且Unicode CLDR具有158个国家/地区的邮政编码验证正则表达式。 (当您下载CLDR时,它位于补充/ postalCodeData.xml中)
如果你真的想要州/省,那么有一个CLDR建议在这里向CLDR添加地址格式信息 - http://unicode.org/review/pri180/
您会注意到该提案会链接到google appengine服务,其中包含建议的地址格式信息 - http://i18napis.appspot.com/address
州/省似乎在那里列出,但仅限于在邮政地址中需要此类信息的国家/地区。看起来它被翻译成每个国家的语言 - 例如,加拿大省名称以英语和法语列出。例如,它也告诉你它在日本被称为一个县
如果您真的想要所有细分,无论邮政地址是否需要,都要抓住ISO 3166-2。在这里购买 - http://www.iso.org/iso/country_codes/iso_3166_databases.htm(您也可以将其从维基百科网站上删除ISO-3166-2)