Php 使用getCountryNames()时出现Symfony2语言环境en_gb问题

Php 使用getCountryNames()时出现Symfony2语言环境en_gb问题,php,symfony,parameters,geolocation,intl,Php,Symfony,Parameters,Geolocation,Intl,在my parameters.yml中,我有: parameters: locale: en-gb /** * @ORM\Column(name="Country", type="string", length=2) * @Assert\Country(message = "The country '{{ value }}' is not a valid country.") * @Assert\NotBlank() */ private $country; 在我的用户实体中

在my parameters.yml中,我有:

parameters:
    locale: en-gb
/**
 * @ORM\Column(name="Country", type="string", length=2)
 * @Assert\Country(message = "The country '{{ value }}' is not a valid country.")
 * @Assert\NotBlank()
 */
private $country;
在我的用户实体中,我有:

parameters:
    locale: en-gb
/**
 * @ORM\Column(name="Country", type="string", length=2)
 * @Assert\Country(message = "The country '{{ value }}' is not a valid country.")
 * @Assert\NotBlank()
 */
private $country;
当我使用表单时,验证会抱怨: “国家‘美国’不是有效的国家。”

所以我在附近找了个地方: /src/Symfony/Component/Validator/Constraints/CountryValidator

遇到了:

$countries = Intl::getRegionBundle()->getCountryNames();
所以我把它放在我的代码里,看看里面有什么。里面有什么,是这样的:

array(1) { ["UM"]=> string(27) "U.S. Minor Outlying Islands" } 
而不是它应该拥有的258个国家

如果我将区域设置更改为en而不是en gb,我将获得数组中的258个国家/地区

所以,我的问题是我的parameters.yml是否应该是这样

parameters:
    locale: en, en-gb
或者类似的?因此,它从en中获取所有内容,并覆盖en gb所需的内容


还是这是一只虫子?(这似乎是我使用的.2.3.1版本中的一个错误,现在已在2.3.5中修复)-多亏了Ritter提供的这些信息。

我相信如果要指定倍数,需要使用管道(|)

就这样

locale: en|fr|de

希望有帮助

我认为这是一个bug,因为相同的代码在Symfony 2.1中正常工作

我在这里提出了一个错误报告:


请随时添加评论或进一步信息

这不是问题所在。需要将en gb与en结合起来。不能在两者之间做出选择。理想情况下,我只需要en-gb,但是当涉及到getCountryName时,只返回en和en-gb之间的差异。这不太理想。所以,如果没有别的,让en-gb覆盖en将是一个好主意。不确定是否支持。好吧,我想我遗漏了一些东西。所以你不希望所有256个国家都被接受。你希望你的最终结果是什么。看起来你希望我们被接受,但还有什么?目前,如果我的本地设置为en gb,唯一被接受的国家是UM,因为这是getCountryNames中唯一可用的国家(Symfony在涉及国家字段时使用它进行验证)。这是我的问题。我猜这可能是一个bug,或者是en-gb不受支持。我确信这并不像其他人现在报告的那样是一个bug,但en-gb不受支持的可能性可能是。我发现设置了两个默认位置,/src/Symfony/Component/Intl/ResourceBundle/transformationrule/Transformer/Rule/localebundlettransformationrule.php和/src/Symfony/Component/Intl/ResourceBundle/transformationrule/regionbundle/RegionBundleTransformationRule.php通常我不建议修改这些文件,但它可能有助于确定发生了什么。祝你好运对不起,我帮不了什么忙!我可以看到它没有被报告为一个bug,因为大多数人会把它作为en而不是改成en-gb。他们需要将其更改为en gb,并使用国家验证进行验证。我就是不明白它怎么能被归类为“按预期工作”。谢谢你的关注!谢谢我想可能是的。对于GB,它只返回一个英国英语名称与美国名称不同的国家。我可以确认Symfony 2.3.5解决了这个问题。我今天早上刚申请的。谢谢你让我知道。