braunstetter / localized-routes
Get your routes localized.
Installs: 349
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.0
- symfony/framework-bundle: ^4.4|^5.0|^6.0
Requires (Dev)
README
This bundle simply redirects your requests to a locale prefixed route.
So /news
is going to be /en/news
, if the current language is en
.
Localized routes are something that has been repeatedly discussed on sites like StackOverflow in the past.
I think it's better to use a well tested bundle for this purpose instead of writing a new listener for each project. This bundle can then be further developed and improved by the community.
Installation
composer require braunstetter/localized-routes
Now you can prefix your controller routes:
# annotations.yaml controllers: resource: ../../src/Controller/ type: annotation prefix: /{_locale}
You're done! Your blank routes are getting redirected to localized ones.
Configuration
Since the framework bundle already provides two configuration values (default_locale, enabled_locales), we can use this to configure our forwarding process.
framework: default_locale: en enabled_locales: [ 'es', 'en' ]
default_locale
This is just the fallback locale. If not set, Symfony will try to determine a value based on your system settings. Most likely 'en'.
enabled_locales
If this value is not specified, then all locales are allowed. If you transfer an array of values here, the selection is restricted accordingly.
Parameters
This bundle exposes the enabled_locales
and default_locale
configuration values of the framework-bundle as parameters.
In addition to this, you also have an enabled_locales_string
parameter - joining your enabled_locales e.g.: de|en|es
So you can use these locale-specific parameters in your configuration files:
# annotations.yaml controllers: resource: ../../src/Controller/ type: annotation prefix: /{_locale} requirements: _locale: '%enabled_locales_string%' defaults: _locales: '%default_locale%'
This bundle can certainly be improved. If you have any questions and/or suggestions for improvements, don't hesitate to create a new issue or submit a PR.
Todo
- add attributes to documentation
- add explanation for a language switcher to documentation
- redirect on not supported locale to default locale - like
/es/my_route
when justde|en
are supported