美好的一天。 我在Symfony 2中有2个项目。首先,我使用{{error.message | trans}}进行翻译 “凭据错误”授权错误消息。它从Component \ Translation \ Translator.php调用Translator类trans方法来翻译该字符串。
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
if (null === $locale) {
$locale = $this->getLocale();
}
if (null === $domain) {
$domain = 'messages';
}
if (!isset($this->catalogues[$locale])) {
$this->loadCatalogue($locale);
}
return strtr($this->catalogues[$locale]->get((string) $id, $domain), $parameters);
}
它正常工作,并从messages.domain.yml文件返回已翻译的字符串。在第二个项目中,我使用相同的设置,并尝试以相同的方式在树枝中翻译错误字符串。但它不起作用,并返回原始的“Bad credentials”字符串。检查后,我发现,Component \ Translation \ IdentityTranslator.php类正在创建(而不是Translator.php),并且正在调用方法trans:
/**
* IdentityTranslator does not translate anything.
*
* @author Fabien Potencier <fabien@symfony.com>
*
* @api
*/
class IdentityTranslator implements TranslatorInterface
{
/// More code here
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
{
return strtr((string) $id, $parameters);
}
}
因此,它只返回原始消息。什么可能是这种问题的潜在根源?这是Symfony的bug吗? (两个项目都使用Symfony 2.4.4)