routes - Symfony 5 - 国际化路由 - 带有空或动态区域设置的前缀路由
问题描述
以下声明有效:
app_localized:
resource: "../src/Controller/"
type: annotation
prefix:
en: '' # don't prefix URLs for English, the default locale
de: '/de'
es: '/es'
所以我们可以访问以下网址:
- /
- /de
- /es
但是当支持的语言发生变化时,我不想每年更新这个项目的配置文件。我想声明如下路线:
app_localized:
resource: "../src/Controller/"
type: annotation
prefix:
en: '' # don't prefix URLs for English, the default locale
'*': {_locale}
因此可以访问以下网址:
- /
- /de
- /es
- /nl
- /fr
- 以及更多
但遗憾的是,这行不通。将语言环境定义为模式也很棒:
^[a-z]{2}([-])?([A-Za-z]{2})?$
任何想法如何解决这个问题?
解决方案
我通常定义两条路由:一条用于无前缀路由,另一条用于带前缀
这样的事情可能会奏效
app_localized:
resource: "../src/Controller/"
type: annotation
prefix: '/{_locale}'
name_prefix: 'localized_'
app_default:
resource: "../src/Controller/"
type: annotation
prefix: '/'
name_prefix: 'default_'
defaults:
_locale: en
推荐阅读
- c# - 调用其他外部 API 的 .Net 核心 Web API
- visual-studio-code - 如何从新扩展的设置中获取数据
- cmake - 什么优先于 CMAKE_CXX_COMPILER、CMAKE_TOOLCHAIN_FILE 等?
- javascript - Nodejs AdminBro 显示/编辑 JSONB 字段
- go - golang dbus 服务器示例
- google-cloud-dataflow - 如何用实际文件的最后修改时间覆盖 Apache 梁的 FileIO 的默认 metadata.lastModifiedMillis()?
- c# - PostgreSQL 问题(源代码和 PgAdmin 中的结果不同)
- swift - 类型“UIScrollView”不符合协议“ESExtensionsProvider”
- javascript - 渲染没有返回任何内容。这通常意味着缺少返回语句
- bash - 如何修复 bash 配置文件中损坏的 PATH 行?