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/reg
或 www.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();
}
在 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/reg
或 www.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();
}