diff --git a/conf.py b/conf.py
index 658ef26d1..c68e1ea87 100644
--- a/conf.py
+++ b/conf.py
@@ -478,8 +478,24 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
_version = _version or app.config.version
_lang = _lang or app.config.language or 'en'
_canonical_page = f'{pagename}.html'
+
+ # legal translations have different URLs schemes as they are not managed on transifex
+ # e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
+ if pagename.startswith('legal/terms/'):
+ if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
+ # remove language code for current translation, set target one
+ _page = re.sub("_[a-z]{2}$", "", pagename)
+ if 'terms/i18n' not in _page:
+ _page = _page.replace("/terms/", "/terms/i18n/")
+ _canonical_page = f'{_page}_{_lang}.html'
+ elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
+ # remove language code for current translation, link to original EN one
+ _page = re.sub("_[a-z]{2}$", "", pagename)
+ _canonical_page = f'{_page.replace("/i18n/", "/")}.html'
+
if app.config.is_remote_build:
_canonical_page = _canonical_page.replace('index.html', '')
+
return f'{_root}' \
f'{f"/{_version}" if app.config.versions else ""}' \
f'{f"/{_lang}" if _lang != "en" else ""}' \
diff --git a/extensions/odoo_theme/layout_templates/legal.html b/extensions/odoo_theme/layout_templates/legal.html
index 355040f70..4b128cb1f 100644
--- a/extensions/odoo_theme/layout_templates/legal.html
+++ b/extensions/odoo_theme/layout_templates/legal.html
@@ -40,7 +40,7 @@
{{ _("Read") }}
{%- else %}
{{ _("Read") }}
- {{ _("English") }}
+ {{ _("English") }}
{%- endif %}