diff --git a/src/core/templatetags/hub_absolute.py b/src/core/templatetags/hub_absolute.py
index 92988b1f58969fadaca8ff607b99fb50a92e2948..4e8db3b4cb5117a8bce128afd7e2817a58eb8ebb 100644
--- a/src/core/templatetags/hub_absolute.py
+++ b/src/core/templatetags/hub_absolute.py
@@ -1,8 +1,12 @@
+from typing import Optional
+
 from django.conf import settings
 from django.conf.urls.i18n import i18n_patterns
 from django.contrib import admin
+from django.http import HttpRequest
 from django.template.defaulttags import register
 from django.urls import NoReverseMatch, get_script_prefix, include, path, reverse, set_script_prefix
+from django.utils import translation
 
 PREFIXES = {
     'admin': settings.ADMIN_BASE_URL,
@@ -42,13 +46,28 @@ URL_CONFIGS = {
 
 
 @register.simple_tag
-def hub_absolute(url: str, *args, i18n: bool = True, query_string: str = '', **kwargs):
+def hub_absolute(url: str, *args, i18n: bool = True, lang: Optional[str] = None, query_string: str = '', **kwargs):
     try:
         app, _ = url.split(':')
     except ValueError:
         raise NoReverseMatch('No reverse found, missing namespace')
     thread_prefix = get_script_prefix()
     set_script_prefix(PREFIXES[app])
-    reverse_url = reverse(url, URL_CONFIGS['i18n' if i18n else 'plain'][app], current_app=app, args=args, kwargs=kwargs)
+    cur_language = translation.get_language()
+    try:
+        if lang:
+            # switch language if requested
+            translation.activate(lang)
+        reverse_url = reverse(url, URL_CONFIGS['i18n' if i18n else 'plain'][app], current_app=app, args=args, kwargs=kwargs)
+    finally:
+        translation.activate(cur_language)
     set_script_prefix(thread_prefix)
     return reverse_url if not query_string else f'{reverse_url}?{query_string}'
+
+
+@register.simple_tag
+def hub_absolute_self(request: HttpRequest, i18n: bool = True, lang: Optional[str] = None):
+    url = f'{request.resolver_match.app_name}:{request.resolver_match.url_name}'
+    query_string = request.META.get('QUERY_STRING')
+
+    return hub_absolute(url, i18n=i18n, lang=lang, query_string=query_string, *request.resolver_match.args, **request.resolver_match.kwargs)
diff --git a/src/plainui/jinja2.py b/src/plainui/jinja2.py
index c33949e63057e6487716b007a34d4eb5ccaf97b0..f06a6148c1e6056b8beed4cfbea9becfe09a7fbb 100644
--- a/src/plainui/jinja2.py
+++ b/src/plainui/jinja2.py
@@ -1,11 +1,11 @@
 import re
 from datetime import datetime, timedelta
-from django.conf import settings
 from typing import Any
 
 from jinja2 import Environment, pass_context
 from jinja2.runtime import Context
 
+from django.conf import settings
 from django.contrib.humanize.templatetags.humanize import NaturalTimeFormatter
 from django.contrib.messages import get_messages
 from django.http import HttpRequest
@@ -22,7 +22,7 @@ from modeltranslation.fields import build_localized_fieldname
 from modeltranslation.settings import AVAILABLE_LANGUAGES
 
 from core.models import PlatformUser, UserBadge
-from core.templatetags.hub_absolute import hub_absolute
+from core.templatetags.hub_absolute import hub_absolute, hub_absolute_self
 from core.templatetags.update_parameters import update_parameters
 
 from plainui.utils import fetch_wiki_page
@@ -284,6 +284,7 @@ def environment(**options):
             'get_language': get_language,
             'get_messages': get_messages,
             'hub_absolute': hub_absolute,
+            'hub_absolute_self': hub_absolute_self,
             'json_script': json_script,
             'num_of_notifications': num_of_notifications,
             'num_of_unread_messages': num_of_unread_messages,
diff --git a/src/plainui/jinja2/plainui/components/header_buttons.html b/src/plainui/jinja2/plainui/components/header_buttons.html
index 4cde1609c239923aa6cd16c90b0252748f5c8280..5d85b6ec889b01e05cb8a9dc0b3ddbe18682c355 100644
--- a/src/plainui/jinja2/plainui/components/header_buttons.html
+++ b/src/plainui/jinja2/plainui/components/header_buttons.html
@@ -140,7 +140,7 @@
 {% macro share(title=_("share this "), color="transparent" ) -%}
     {% if not disable_share %}
       <a
-          href="{{ hub_absolute(request.resolver_match.view_name, i18n=False, query_string=request.META.QUERY_STRING, *view.args, **view.kwargs) if view else hub_absolute(request.resolver_match.view_name, i18n=False, query_string=request.META.QUERY_STRING) }}"
+          href="{{ hub_absolute_self(request, i18n=False) }}"
           class="btn-icon-big btn-{{ color }} nav-link"
           title="{{ title }}"
           target="_blank"