umpirsky / i18n-routing-bundle
Internationalized routing with minimal performance cost.
Installs: 4 786
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 4
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.4|^8.0
- symfony/framework-bundle: ^5.4|^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^9.6.13
- symfony/phpunit-bridge: ^6.0|^7.0
- symfony/var-dumper: ^5.4|^6.0|^7.0
- symfony/yaml: ^5.0|^6.0|^7.0
This package is auto-updated.
Last update: 2024-10-31 00:16:41 UTC
README
i18n routing bundle • symfony upgrade fixer • twig gettext extractor • wisdom • centipede • permissions handler
UmpirskyI18nRoutingBundle
Internationalized routing with minimal performance cost.
Idea
The idea is to create i18n route for each regular route in the project instead of creating separate route for each locale. On large projects with high number of routes and many locales supported this can lead to explosion of routes and performance issues. With more then 1000 routes and 30+ languages it can be a real problem.
With this bundle and prefix
strategy there is no performance cost. For prefix_except_default
number of routes is doubled, but again, does not depend on number of languages.
Installation
composer require umpirsky/i18n-routing-bundle
<?php class AppKernel extends Kernel { public function registerBundles() { return [ // ... new Umpirsky\I18nRoutingBundle\UmpirskyI18nRoutingBundle(), ]; } }
Configuration
umpirsky_i18n_routing: default_locale: en locales: [en, sr, ru]
Usage
Disabling i18n routing on route level
If you want route not to be localized, you can disable it using i18n
option:
foo: path: /foo options: i18n: false
Strategies
There are multiple routing strategies supported.
prefix
This will prefix all urls with given locales:
/en/foo
/sr/foo
/ru/foo
Configuration:
umpirsky_i18n_routing: default_locale: en locales: [en, sr, ru] strategy: prefix
prefix_except_default
This will prefix all urls with given locales except default:
/foo
/sr/foo
/ru/foo
Configuration:
umpirsky_i18n_routing: default_locale: en locales: [en, sr, ru] strategy: prefix_except_default
Example
There is example integration with Symfony Standard Edition.
Inspiration
This bundle is inspired by JMSI18nRoutingBundle and BeSimpleI18nRoutingBundle, but sacrifices the url translation feature for the sake of performance.