Publish German and Spanish homepage (/de/, /es/) with hreflang cluster and language switcher

Homepage pilot of the website i18n project. Adds the translated homepage for DE and
ES, the shared selector at /static/lang.js, and the hreflang cluster on all three
language versions (EN included, or the cluster is asymmetric and ignored).

- de/index.html, es/index.html: translator output plus the i18n build (html lang,
  self-referencing canonical, hreflang cluster, lang.js tag, switcher slot in the footer).
- index.html: same cluster + lang.js tag + switcher slot; canonical and og:url
  normalised to the lowercase host.
- static/lang.js: the tested selector (client-side language choice, auto-detect on the
  EN homepage only, once per session; a stored choice or ?lang= always wins).
- sitemap.xml: /de/ and /es/ (priority 1.0, lastmod 2026-10-24).
- llms.txt: new '## Languages' section.

Two gaps in the build recipe were closed while building: a mirrored page cannot use
root-relative source paths (style.css, images/* would resolve to /de/style.css -> 404),
so the build now re-points assets at the site root and keeps page links on the EN route
until the language page exists; and og:url is now this page's own URL instead of the
EN one inherited from the source. Not built yet: support.html, odoo-hosting-2027.html,
the blog, the bootcamp page, the legal pages.
This commit is contained in:
oliver committed 2026-10-24 21:22:13 +00:00
1 parent 2c7d9a393e
commit 937dbd4dbf
6 files changed
+1417 -2

No files matched your search

+8 -2
View File
@@ -5,11 +5,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Deploy Odoo in 5 minutes with fully managed hosting. Automatic backups, SSL, Git-based modules, and 6 global locations." />
<title>ODOO4projects | Deploy Odoo in 5 Minutes — Fully Managed Hosting</title>
<link rel="canonical" href="https://ODOO4projects.com/" />
<link rel="canonical" href="https://odoo4projects.com/" />
<link rel="alternate" hreflang="en-US" href="https://odoo4projects.com/" />
<link rel="alternate" hreflang="de" href="https://odoo4projects.com/de/" />
<link rel="alternate" hreflang="es" href="https://odoo4projects.com/es/" />
<link rel="alternate" hreflang="x-default" href="https://odoo4projects.com/" />
<meta property="og:title" content="ODOO4projects | Deploy Odoo in 5 Minutes — Fully Managed Hosting" />
<meta property="og:description" content="Deploy Odoo in 5 minutes with fully managed hosting. Automatic backups, SSL, and Git-based module management." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://ODOO4projects.com/" />
<meta property="og:url" content="https://odoo4projects.com/" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="icon" href="images/favicon.ico" />
<script type="application/ld+json">
@@ -218,6 +222,7 @@
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init()
</script>
<script defer src="/static/lang.js"></script>
</head>
<body>
<!--
@@ -657,6 +662,7 @@
</div>
<div class="fcopy">Copyright &copy; ODOO4projects LLC</div>
</div>
<div data-lang-switcher class="lang-switch-slot"></div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>