Symfony 翻译忽略参数中的大括号

Symfony translation ignores curly braces in parameters

当使用 symfony 翻译模块翻译一段代码时,symfony 似乎忽略了大括号。

 <trans-unit id="test">
    <source>test<source>
    <target>
        test {test}
    </target>
</trans-unit>

使用以下 Translator 配置时。

$translator = new Translator("en");
$translator->addLoader('xlf', new XliffFileLoader());
$translator->addResource('xlf', 'translations/messages+intl-icu.en.xlf', 'en');
$translator->setFallbackLocales(["en"]);

$message = $translator->trans("test", ["test" => "error"], null, "en");

产生以下翻译:error {error} 而我期望 test error

这是我配置中某处的错误还是我误解了应该如何进行替换?

我的symfony版本如下

"symfony/translation": "v5.0.2",
"symfony/config": "v5.0.2"

根据文档 (https://symfony.com/doc/current/translation/message_format.html)

Everything within the curly braces ({...}) is processed by the formatter and replaced by its placeholder:

这是 Symfony 的错误还是我用错了?

我遇到了同样的问题,问:https://github.com/symfony/symfony/issues/36461

回答:你需要传递['{test}' => 'error']作为参数数组,包括键字符串中的大括号。