remmel / i18n-routing-bundle
此包允许您创建国际化路由。
5.0.1
2020-06-28 15:25 UTC
Requires
- php: ^7.1
- symfony/framework-bundle: ^4.0 || ^5.0
Requires (Dev)
- phpunit/phpunit: ^6.0
- sensio/framework-extra-bundle: *
- symfony/symfony: ^4.0 || ^5.0
Suggests
- jms/translation-bundle: If you want to use the RouteTranslation extractor
README
每个区域设置的全前缀
该包允许您为每个区域设置配置主机+前缀。
对于以下网站
- www.website.com (英文)
- www.website.de (德语)
- www.website.be/fr/ (比利时法语)
- www.website.be/nl/ (比利时荷兰语)
最小配置
配置将是
# config/packages/jms_i18n_routing.yaml jms_i18n_routing: locales: en: //www.website.com de: //www.website.de fr_BE: //www.website.be/fr nl_BE: //www.website.be/nl
翻译配置
要翻译名为 "contact_page" 的德语路由
# translations/routes.de.yml contact_page: /kontakt
因此,当调用
可选配置
要禁用特定路由的国际化功能:@Route("/api", options={"i18n"=false})
或
# app/config/routing.yaml apiendpoint: ... options: { i18n: false }
要只为子集区域设置启用路由:@Route("/about", options={"i18n_locales"={"en", "de"}})
这些区域设置必须在 jms_i18n_routing.locales 中配置
安装
下载包
composer req remmel/i18n-routing-bundle
启用包 - 对于不使用 Symfony Flex 的应用程序
// config/bundles.php return [ // ... JMS\I18nRoutingBundle\JMSI18nRoutingBundle::class => ['all' => true], ];
创建配置
使用 2 个 "文件夹" 的简单配置
# config/packages/jms_i18n_routing.yaml jms_i18n_routing: locales: en: /eng de: /deu
当更新该配置时,可能需要清除缓存:bin/console cache:clear
运行 bin/console debug:router
检查配置是否正确
Symfony 示例应用程序
JMSI18nRoutingBundle 与 Symfony i18n 路由及该扩展
JMSI18nRoutingBundle
此代码基于 JMSI18nRoutingBundle。
此分支已简化,仅保留与每个区域设置的前缀/主机相关的代码。
Symfony
Symfony 4.1 现在处理路由和前缀的翻译。Symfony 5.1 现在处理每个区域设置的不同主机。因此,如果要将路由翻译外部化(例如,在 routes.xx.yml 中),则该扩展很有用。
当该功能实现并将翻译外部化到 routes.??.yml 文件中时,该包将不再有用。