Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Localized Routes Laravel Package

braunstetter/localized-routes

View on GitHub
Deep Wiki
Context7

LocalizedRoutesBundle

Scrutinizer Code Quality Code Coverage Build Status Total Downloads License

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 just de|en are supported
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver