Symfony2 Locale 在使用 getCountryNames() 时en_gb问题


Symfony2 Locale en_gb issue when using getCountryNames()

在我的参数.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;

当我使用表单时,验证会抱怨:"'美国'国家不是一个有效的国家。

所以我在周围打了个猎物:/src/Symfony/Component/Validator/Constraint/CountryValidator

并遇到:

$countries = Intl::getRegionBundle()->getCountryNames();

所以我把它贴在我的代码中,看看里面有什么。里面的内容是这样的:

array(1) { ["UM"]=> string(27) "U.S. Minor Outlying Islands" } 

而不是它应该有的258个国家。

如果我将我的语言环境更改为 en 而不是 en-gb,我会得到数组中的 258 个国家/地区。

所以,我的问题是我的参数.yml 是否应该看起来像这样?

parameters:
    locale: en, en-gb

还是诸如此类?因此,它从 en 中获取所有内容并覆盖 en-gb 所需的内容。

还是这是一个错误?(这似乎是我正在使用的版本中的一个错误。 2.3.1,现已在 2.3.5 中修复) - 感谢里特提供此信息。

我相信

这是一个错误,因为相同的代码在Symfony 2.1中可以正常工作。

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

https://github.com/symfony/symfony/issues/9180

请随时添加评论或更多信息。

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

所以像这样

locale: en|fr|de

希望有帮助。