gpt4 book ai didi

php - Symfony i18n 路由 : partial language support

转载 作者:行者123 更新时间:2023-12-04 01:38:58 25 4
gpt4 key购买 nike

我有几十条路由定义如下:

services:
path:
en: /en/services
de: /de/dienstleistungen
controller: App\Controller\SimplePageController::page

这是使用 Localized routing我相信它是在 Symfony 4.1 中引入的。

所有路线都有英语和德语的路径。现在我想用其他语言翻译一些特定的页面。比如我的主页。问题是,如果我将另一种语言添加到我的主页的路由中,它将不会加载,因为它无法创建指向没有以这种新语言定义的路由的其他页面的链接

如果我访问/nl/homepage,Twig 中的以下链接生成失败

<link href="{{ path('services') }}">

错误

Unable to generate a URL for the named route "services" as such route does not exist.

如果当前语言没有路由,我如何告诉 Symfony 创建到英语路由的链接?或者更好的是,按照以下行指定一些动态路径:

services:
path:
en: /en/services
de: /de/dienstleistungen
default: /$1/services
controller: App\Controller\SimplePageController::page

编辑:我现在使用的是 Symfony 5.0.4,但仍然有同样的问题。

最佳答案

这不是您要找的吗?

# config/packages/translation.yaml
framework:
translator:
fallbacks: ['en']

它会告诉您语言是否未定义为使用“en”作为默认后备。

编辑:那么您可能会尝试使用类似这样的解决方法,但不确定这是否是您要找的东西

# config/services.yaml
parameters:
app.localesForSpecificRouting: en|de
app.localesForAnotherSpecificRouting: en|de|fr

然后在您的 Controller 中,您可以为特定路线加载特定语言

/**
* @Route("/{_locale}/routing1", name="routing1", requirements={
* "_locale"="%app.localesForSpecificRouting%"
* })
*/
public function routing1(){...}

/**
* @Route("/{_locale}/routing2", name="routing2", requirements={
* "_locale"="%app.localesForAnotherSpecificRouting%"
* })
*/
public function routing2(){...}

关于php - Symfony i18n 路由 : partial language support,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58368187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com