2026 · PHP · JavaScript · Apache · Cockpit CMS

i18n en PHP estático a escala OVH

Un stack i18n que funciona en hosting compartido barato donde el QSA de mod_rewrite se rompe: parsing del URL en PHP + reescritor de enlaces en JS al boot. Sin frameworks, sin build step.

Ver en GitHub
i18n en PHP estático a escala OVH

La mayoría de stacks i18n asumen un framework real. Necesitábamos versiones PT y ES de un sitio PHP cuasi estático en hosting compartido OVH, donde la flag QSA de mod_rewrite a veces deja caer query strings antes de que PHP las vea.

Dos piezas:

  1. Server-side: un helper lang() que lee $_GET['lang'] primero, hace fallback a un regex contra $_SERVER['REQUEST_URI'] para /pt/ o /es/. Cinturón y tirantes — funciona tanto si el rewrite pasa la QS como si no.
  2. Client-side: 12 líneas de JS al boot que detectan el locale del URL y reescriben todos los <a href="/..."> internos para prefijar con /pt/ o /es/. El mismo locale persiste en cada clic interno.

Sin React, sin Next, sin librería de router. Tres locales (EN, PT, ES) sobre un Cockpit headless que guarda las strings traducidas. El sitemap.php emite las tres variantes de URL con alternates hreflang.

Stack aburrido. Entrega rápido. Funciona en hosting que cuesta 4€/mes.