【问题标题】:Symfony2 Locale en_gb issue when using getCountryNames()使用 getCountryNames() 时的 Symfony2 Locale en_gb 问题
【发布时间】:2013-09-22 06:44:58
【问题描述】:

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

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

所以我在以下地方进行了狩猎: /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 提供此信息。

【问题讨论】:

    标签: php symfony parameters geolocation intl


    【解决方案1】:

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

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

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

    请随时添加 cmets 或更多信息。

    【讨论】:

    • 谢谢。我想可能是这样。对于 GB,它只返回一个在英式英语中与 US 有不同名称的国家/地区。
    • 我可以确认 Symfony 2.3.5 解决了这个问题。我今天早上才申请的。
    • 感谢您告诉我。
    【解决方案2】:

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

    就这样

    locale: en|fr|de
    

    希望对您有所帮助。

    【讨论】:

    • 这不是问题。需要将 en-gb 与 en 结合起来。不是两者之间的选择。理想情况下,我只想要 en-gb,但是当涉及到 getCountryNames 时,只返回 en 和 en-gb 之间的差异。这不太理想。因此,如果不出意外,让 en-gb 覆盖 en 将是一个想法。不确定是否支持。
    • 好的,所以我想我错过了一些东西。所以你不希望所有 256 个国家都被接受。你想要什么你的最终结果。看起来你希望我们被接受,但还有什么?
    • 目前,如果我的本地设置为 en-gb,则唯一可以接受的国家是 UM,因为它是 getCountryNames 中唯一可用的国家(Symfony 用于验证何时出现到一个国家领域。)那是我的问题。我猜它要么是一个错误,要么是对 en-gb 的支持很差。
    • 我确信这不是其他人现在报告的错误,但可能是 en-gb 支持不佳。我发现有两个地方设置了默认值,/src/Symfony/Component/Intl/ResourceBundle/Transformer/Rule/LocaleBundleTransformationRule.php 和 /src/Symfony/Component/Intl/ResourceBundle/Transformer/Rule/RegionBundleTransformationRule.php 通常我不会t 建议弄乱这些文件,但它可能有助于确定发生了什么。祝你好运!对不起,我帮不上什么忙!
    • 我可以看到它没有被报告为错误,因为大多数人会将其保留为 en 而不是将其更改为 en-gb。他们需要将其更改为 en-gb 并使用国家/地区验证才能发生。我只是看不出它如何被归类为“按预期工作”。感谢收看!
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多