Add langswitcher plugin v3.3.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 00:00:12 +02:00
parent 3075fc447a
commit b3f8bd1998
25 changed files with 1407 additions and 0 deletions
@@ -0,0 +1,29 @@
{{ block('language_block_start') }}
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
{% for language in langswitcher.languages %}
{% set active_class = '' %}
{% set show_language = true %}
{% if language == langswitcher.current %}
{% set active_class = 'active' %}
{% endif %}
{% if langswitcher.translated_routes[language] %}
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
{% else %}
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
{% endif %}
{% 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 = url('/') %}
{% elseif untranslated_pages_behavior == 'hide' %}
{% set show_language = false %}
{% endif %}
{% endif %}
{% endif %}
{{ block('language_item') }}
{% endfor %}
{{ block('language_block_end') }}
@@ -0,0 +1 @@
{{ native_name(language)|capitalize }}
@@ -0,0 +1 @@
{{ language|upper }}
@@ -0,0 +1,16 @@
{% set language_obj = grav.language %}
{% for language in langswitcher.languages %}
{% if langswitcher.translated_routes[language] %}
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
{% else %}
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
{% endif %}
{% set href_url = uri.base ~ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) %}
{% if (language_obj.default == language and config.languages.include_default_lang == false) %}
<link rel="alternate" hreflang="x-default" href="{{ href_url }}" />
{% endif %}
<link rel="alternate" hreflang="{{ language }}" href="{{ href_url }}" />
{% endfor %}
@@ -0,0 +1,15 @@
{% extends 'partials/langswitcher-logic.html.twig' %}
{% block language_block_start %}
<ul class="langswitcher">
{% endblock %}
{% block language_block_end %}
</ul>
{% endblock %}
{% block language_item %}
{% if show_language %}
<li><a href="{{ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) }}" class="external {{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
{% endif %}
{% endblock %}