Add locale selection menu

master
Julien Rosset 1 year ago
parent d4fb881087
commit 8ed04f69fd

@ -4,51 +4,52 @@
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=8.1",
"ext-ctype": "*",
"ext-iconv": "*",
"doctrine/annotations": "^2.0",
"doctrine/dbal": "^3",
"php": ">=8.1",
"ext-ctype": "*",
"ext-iconv": "*",
"doctrine/annotations": "^2.0",
"doctrine/dbal": "^3",
"doctrine/doctrine-bundle": "^2.9",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.15",
"doctrine/orm": "^2.15",
"phpdocumentor/reflection-docblock": "^5.3",
"phpstan/phpdoc-parser": "^1.20",
"phpstan/phpdoc-parser": "^1.20",
"stof/doctrine-extensions-bundle": "^1.7",
"symfony/asset": "6.4.*",
"symfony/asset-mapper": "6.4.*",
"symfony/console": "6.4.*",
"symfony/asset": "6.4.*",
"symfony/asset-mapper": "6.4.*",
"symfony/console": "6.4.*",
"symfony/doctrine-messenger": "6.4.*",
"symfony/dotenv": "6.4.*",
"symfony/dotenv": "6.4.*",
"symfony/expression-language": "6.4.*",
"symfony/flex": "^2",
"symfony/form": "6.4.*",
"symfony/flex": "^2",
"symfony/form": "6.4.*",
"symfony/framework-bundle": "6.4.*",
"symfony/http-client": "6.4.*",
"symfony/intl": "6.4.*",
"symfony/mailer": "6.4.*",
"symfony/mime": "6.4.*",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "6.4.*",
"symfony/process": "6.4.*",
"symfony/property-access": "6.4.*",
"symfony/property-info": "6.4.*",
"symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*",
"symfony/serializer": "6.4.*",
"symfony/string": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/web-link": "6.4.*",
"symfony/yaml": "6.4.*",
"symfony/http-client": "6.4.*",
"symfony/intl": "6.4.*",
"symfony/mailer": "6.4.*",
"symfony/mime": "6.4.*",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "6.4.*",
"symfony/process": "6.4.*",
"symfony/property-access": "6.4.*",
"symfony/property-info": "6.4.*",
"symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*",
"symfony/serializer": "6.4.*",
"symfony/string": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/web-link": "6.4.*",
"symfony/yaml": "6.4.*",
"symfonycasts/sass-bundle": "^0.6.0",
"symfonycasts/verify-email-bundle": "^1.17",
"twbs/bootstrap": "^5.3",
"twig/extra-bundle": "^3.0",
"twig/string-extra": "^3.10",
"twig/twig": "^3.0"
"twbs/bootstrap": "^5.3",
"twig/extra-bundle": "^3.0",
"twig/intl-extra": "^3.9",
"twig/string-extra": "^3.10",
"twig/twig": "^3.0"
},
"config": {
"allow-plugins": {

@ -2,6 +2,9 @@ twig:
default_path: '%kernel.project_dir%/templates'
form_themes: [ 'bootstrap_5_horizontal_layout.html.twig' ]
globals:
locale_all: '%locale.all%'
when@test:
twig:
strict_variables: true

@ -7,4 +7,4 @@ controllers:
path: ../src/Controller/
namespace: App\Controller
type: attribute
prefix: /{_locale<%locale.all%>}
prefix: /{_locale<%locale.all_string%>}

@ -7,7 +7,8 @@ parameters:
mailer.email: '%env(MAILER_EMAIL)%'
mailer.name: '%env(MAILER_NAME)%'
locale.all: 'en|fr'
locale.all: [ 'en', 'fr' ]
locale.all_string: 'en|fr'
locale.default: 'en'
services:

@ -20,7 +20,7 @@ class CoreController extends AbstractController {
*/
public function root_redirect (Request $request): Response {
return $this->redirectToRoute('core_main', [
'_locale' => $request->getPreferredLanguage(explode('|', $this->getParameter('locale.all'))),
'_locale' => $request->getPreferredLanguage($this->getParameter('locale.all')),
]);
}

@ -1,22 +1,34 @@
{% extends "/symfony.html.twig" %}
{% block headerTag %}
<header class="pb-2">
<header class="pb-2 d-flex flex-column justify-content-start fixed-top">
{% endblock %}
{% block headerContent %}
<nav class="navbar-light d-flex flex-column justify-content-start fixed-top">
<div class="d-flex justify-content-between w-100 px-2">
<!--region Website name-->
<a class="navbar-brand" href="{{ path('core_main') }}">
Web EDM
</a>
<!--endregion-->
<!--region menu-->
<div class="d-flex align-items-center">
<a href="{{ path('user_signIn') }}" class="me-3">Sign In</a>
<a href="{{ path('user_signUp') }}" class="me-3">Sign Up</a>
</div>
<!--endregion-->
</div>
</nav>
<div class="d-flex justify-content-between w-100 px-2">
<!--region Website name-->
<a class="navbar-brand" href="{{ path('core_main') }}">
Web EDM
</a>
<!--endregion-->
<!--region menu-->
<nav class="navbar navbar-expand-lg py-0">
<ul class="navbar-nav">
<li class="nav-item"><a href="{{ path('user_signIn') }}" class="nav-link py-0">Sign In</a></li>
<li class="nav-item"><a href="{{ path('user_signUp') }}" class="nav-link py-0">Sign Up</a></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle py-0" id="dropdown-locale" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
{{ app.request.locale|locale_name(app.request.locale)|u.title }}
</a>
<ul class="dropdown-menu" aria-labelledby="dropdown-locale">
{% for locale in locale_all %}
<li>
<a class="dropdown-item" href="{{ path(app.current_route, {'_locale': locale}) }}">{{ locale|locale_name(app.request.locale)|u.title }}</a>
</li>
{% endfor %}
</ul>
</li>
</ul>
</nav>
<!--endregion-->
</div>
{% endblock %}
Loading…
Cancel
Save