Symfony @Route annotation i18n:是否可以为未明确声明的语言提供回退?

Symfony @Route annotation i18n: Is it possible to have a fallback for languages not explicitly declared?

在 Symfony 中使用 @Route 注释我可以执行以下操作:

/**
 * @Route({
 *     "en": "/{_locale}/registration",
 *     "de": "/{_locale}/registrierung",
 * },
 * name="registration",
 * defaults={
 *     "_locale":"%kernel.default_locale%"
 * },
 * requirements={
 *     "_locale":"^[a-z]{2}?$"
 * })
 */
public function defaultAction() { }

英语的游客可以拨打www.mysite.com/en/registration,德语的游客可以拨打www.mysite.com/de/registrierung

是否可以为未明确声明的语言声明默认值?这样的路线例如es 或 fr 访问者的工作方式类似于 www.mysite.com/es/regwww.mysite.com/fr/reg?

伪代码:

/**
 * @Route({
 *     "en": "/{_locale}/registration",
 *     "de": "/{_locale}/registrierung",
 *     "_default_": /{_locale}/reg"
 * },
 * name="registration",
 * defaults={
 *     "_locale":"%kernel.default_locale%"
 * },
 * requirements={
 *     "_locale":"^[a-z]{2}?$"
 * })
 */
public function defaultAction() { }

Currently不可能通过一个注释来完成。 但是,您可以创建第二个回退操作。此外,它们可以按 priority.

排序

示例

/**
 * @Route({
 *     "en": "/{_locale}/registration",
 *     "de": "/{_locale}/registrierung",
 * },
 * name="registration",
 * defaults={
 *     "_locale":"%kernel.default_locale%"
 * },
 * priority="1",
 * requirements={
 *     "_locale":"^[a-z]{2}?$"
 * })
 */
public function defaultAction() {}

/**
 * @Route("/{_locale}/registration",
 * name="registration_fallback",
 * priority="0",
 * requirements={
 *     "_locale":"^[a-z]{2}?$"
 * })
 */
public function fallbackDefaultAction() {
    $this->defaultAction();
}