【问题标题】:double translation in symfony2symfony2中的双重翻译
【发布时间】:2012-06-27 11:48:23
【问题描述】:

我尝试使用简单的验证器翻译。 我的文件:

validation.yml:

Some\UserBundle\Entity\Address:
    properties:
        name:
            - MaxLength:  {limit: 2, message: "some_user.max_length" }

和validators.pl.yml:

some_user:
    max_length: Wartość jest zbyt długa

在 ajax 加载的树枝文件中,我有这个:

{{ form_error(form) }}

当我尝试我的验证器时,应用程序会抛出这个:

An exception has been thrown during the rendering of a template ("Unable to choose a translation for "Wartość jest zbyt długa" with locale "pl".")

好像是双重翻译?有什么想法吗?

我在行动中找到了解决方法:

$errorList = $this->get('validator')->validate($address);
$errors = "";
if (count($errorList) > 0) {
    foreach ($errorList as $err) {
        $errors.= $this->get('translator')
                    ->trans($err->getMessage(), array(), 'validators') . "\n";
    }

}

但我认为它的方式很糟糕。

twig 中好像翻译了两次……但是为什么呢?

【问题讨论】:

    标签: symfony translation twig


    【解决方案1】:

    这是“复数”的问题

    validators.pl.yml 应该如下所示:

    Some\UserBundle\Entity\Address:
    properties:
        name:
            - MaxLength:  {limit: 2, message: "some_user.max_length|some_user.max_length_s" }
    

    但现在,只渲染树枝:

    <ul><li>some_user.max_length_s</li></ul>
    

    【讨论】:

      【解决方案2】:

      我知道你问这个问题已经很久了,但我刚刚遇到了同样的问题,所以希望这对其他人有用:

      您的 validators.pl.yml 应如下所示:

      Some\UserBundle\Entity\Address:
      properties:
          name:
              - MaxLength:  {limit: 2, message: "some_user.max_length" }
      

      然后您管理翻译的文件,假设 validators.pl.xliff 应该如下所示:

      ...
      
      <trans-unit id="1">
          <source>some_user.max_length</source>
          <target>Your text|Your plural text</target>
      </trans-unit>
      
      ...
      

      现在 twig 中的结果将正确呈现。

      【讨论】:

      • Core\HardwareBundle\Entity\WarningConfig: properties: name: - NotBlank: ~ - MinLength: { limit: 5, message: "single|plural" } 仍然对我不起作用 - 获得“无法为...选择翻译”异常。 Symfony 2.1.4
      【解决方案3】:

      您应该查看PluralizationRules.php,了解您的语言是如何定义复数形式的。根据unicode,您应该提供 3 个转换选项,而不是 2。因为您提供了 2,而数据需要第三个,所以引发了异常(InvalidArgumentException)。我发现异常消息有点误导:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        • 2012-04-10
        • 2015-10-07
        • 1970-01-01
        • 2012-04-30
        相关资源
        最近更新 更多