我正在使用FOSUserBundle在Symfony2中编写应用程序。但是,他们的所有模板都在Twig中,但我更喜欢使用php模板。
使用翻译文件,他们使用:
{{ 'security.login.username'|trans }}
对应本节
security:
login:
username: "Username:"
password: "Password:"
remember_me: Remember me
submit: Login
在翻译文件中。我怎么写这个在php?
答案 0 :(得分:4)
您是否认识到FOSUserBundle中翻译文件的特殊名称?例如,它是“FOSUserBundle.en.yml”。文件名遵循message domains约定。在包模板中进一步查看,您会看到,他们使用消息域:
{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}
所以你必须在php中使用与翻译服务相同的消息域:
$this->get('translator')->trans('security.login.username', array(), 'FOSUserBundle');
在PHP模板中,它看起来很相似。
<?php echo $view['translator']->trans('security.login.username', array(), 'FOSUserBundle') ?>
默认邮件域为messages
,如果您从例如messages.en.yml
文件获得翻译,则可以省略。但是必须将每个其他域都提供给翻译者。顺便说一句,验证者的翻译必须是例如validators.en.yml
文件。