-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
Context
I have a site set up so that English is the default language and French is a second language.
When the user switches to French, /fr/ is inserted just after the root me.net/page -> me.net/fr/page.
With session_store_active : false this behaviour works as expected both ways, changing language will add or remove the /fr/ appropriately.
Issue
However, setting session_store: true "traps" the user in French: trying to change the language to English points the user to me.net/page as expected but a 302 redirect bounces them back to me.net/fr/page.
Changing just the session_store setting and nothing else makes this behaviour systematically repeatable.
Useful data
# /user/config/system.yaml
# ...
absolute_urls: false
default_locale: null
reverse_proxy_setup: false
custom_base_url: ''
intl_enabled: true
session:
enabled: true
languages:
supported:
- en
- fr
include_default_lang: false
translations: true
translations_fallback: true
session_store_active: true # <- Flip this boolean to replicate
http_accept_language: true
override_locale: false
0: en
1: fr
pages:
redirect_default_route: false
redirect_default_code: '302'
redirect_trailing_slash: true
# ...# /user/config/plugins/langswitcher.yaml
enabled: true
built_in_css: false
untranslated_pages_behavior: none<!-- /user/themes/custom-theme/templates/partials/langswitcher.html.twig -->
{% for language in langswitcher.languages %}
{% set show_language = true %}
{% if language == langswitcher.current %}
{% set show_language = false %}
{% set lang_url = page.url %}
{% else %}
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
{% if untranslated_pages_behavior != 'none' %}
{% set translated_page = langswitcher.translated_pages[language] %}
{% if (not translated_page) or (not translated_page.published) %}
{% if untranslated_pages_behavior == 'redirect' %}
{% set lang_url = base_lang_url ~ '/' %}
{% elseif untranslated_pages_behavior == 'hide' %}
{% set show_language = false %}
{% endif %}
{% endif %}
{% endif %}
{% set active_class = '' %}
{% endif %}
{% if show_language %}
<a href="{{ lang_url ~ uri.params }}" class="navbar-link language-selection">{{ native_name(language)|capitalize }}</a>
{% endif %}
{% endfor %}Metadata
Metadata
Assignees
Labels
No labels