在php而不是twig,symfony 2中使用翻译

时间:2013-05-13 15:58:37

标签: php symfony translation twig

我正在使用FOSUserBundle在Symfony2中编写应用程序。但是,他们的所有模板都在Twig中,但我更喜欢使用php模板。

使用翻译文件,他们使用:

{{ 'security.login.username'|trans }}

对应本节

security:
    login:
        username: "Username:"
        password: "Password:"
        remember_me: Remember me
        submit: Login

在翻译文件中。我怎么写这个在php?

1 个答案:

答案 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文件。