如何设置基于注解的路由转换?

how to set the routing translation based on annotation?

我网站的所有路由都是根据注解实现的。现在,我想翻译我的路由。为了意识到这一点,我尝试使用包 JMSI18nRoutingBundle.

尽管如此,文档并未给出任何示例如何为每个语言环境指定路由。

这是一个带路由的action,怎么翻译?

/**
 * @Route("/welcome", name="welcome")
 * @Template()
 */
public function welcomeAction() {
    return array();
}

谢谢,


编辑后的问题

/**
 * @Route("/welcome", name="welcome", defaults={"_locale" = "en"})
 * @Route("/bienvenue", name="welcome", defaults={"_locale" = "fr"})
 * @Route("/willkommen", name="welcome", defaults={"_locale" = "de"})
 * @Template()
 */
public function welcomeAction() {
    return array();
}

现在,这个新注释发生了什么:

  1. 选择的路线总是最后一条/willkommen(如果改变路线顺序,选择的路线仍然是最后一条)

  2. _locale根据上面的注释设置'de'最后一个路由的语言环境。

那么,有什么建议吗? 谢谢...

您可以添加多个路由注释。

/**
 * @Route("/welcome", name="welcome", defaults={"_locale" = "en"})
 * @Route("/bienvenue", name="welcome", defaults={"_locale" = "fr"})
 * @Template()
 */

我找到了解决方案。您只需设置 运行 以下命令

php app/console translation:extract fr --bundle=MinnTestBundle --enable-extractor=jms_i18n_routing --output-format=yml

然后,将生成minn/TestBundle/Ressources/translations/routes.fr.yml个文件。自定义您的路由翻译,仅此而已!

希望对其他人有所帮助...