fix(i18n): traducir Hero y Footer completamente (es/en), restaurar /mwp/ WordPress

- Hero: extraído de hardcoded español/inglés a usar traducciones (i18n/ui.ts)
- Footer: 'Maldonado, Uruguay' ahora viene de la traducción
- Hero badges (26+ años, Uptime, Soporte, Maldonado) ahora son traducibles
- Footer subline (Web, correo, infraestructura...) ahora es traducible
- Hero CTAs cambiaron: 'Ver planes' + 'Hablar por WhatsApp' (antes 'Ver servicios')

RESTAURACIÓN CRÍTICA:
- /home/hostingd/public_html/mwp/ había sido borrado por error en un deploy previo
- Restaurado desde /home/hostingd/mwp-backup-20260608-222300.tar.gz (74MB)
- WordPress ahora responde en https://mwp.hostingdelsur.net (200)
- Backup del WordPress queda en /home/hostingd/ para emergencias futuras
This commit is contained in:
Mauri
2026-06-09 08:31:43 -03:00
parent a6ca849630
commit 9c33a67150
4 changed files with 34 additions and 25 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ cp /root/opencode/development/hostingdelsur.net/src/forms/api-htaccess "$DIST/ap
# Copy root .htaccess (HTTPS forzado, security headers) # Copy root .htaccess (HTTPS forzado, security headers)
cp /root/opencode/development/hostingdelsur.net/scripts/htaccess.conf "$DIST/.htaccess" cp /root/opencode/development/hostingdelsur.net/scripts/htaccess.conf "$DIST/.htaccess"
# rsync with --delete to mirror # rsync with --delete to mirror (preserva mwp/, .well-known/, etc.)
rsync -avz --delete \ rsync -avz --delete \
--exclude='mwp' \ --exclude='mwp' \
--exclude='.well-known' \ --exclude='.well-known' \
+4 -3
View File
@@ -10,6 +10,7 @@ interface Props {
const { t, lang } = Astro.props; const { t, lang } = Astro.props;
const year = new Date().getFullYear(); const year = new Date().getFullYear();
const base = lang === 'en' ? '/en' : ''; const base = lang === 'en' ? '/en' : '';
const locationText = lang === 'en' ? 'Maldonado, Uruguay' : 'Maldonado, Uruguay';
const navLinks: { href: string; key: TranslationKey }[] = [ const navLinks: { href: string; key: TranslationKey }[] = [
{ href: `${base}/`, key: 'nav.home' }, { href: `${base}/`, key: 'nav.home' },
@@ -39,7 +40,7 @@ const legalLinks = [
{t('footer.tagline')} {t('footer.tagline')}
</p> </p>
<p class="text-xs mt-4" style="color: #8A8580;"> <p class="text-xs mt-4" style="color: #8A8580;">
{lang === 'en' ? 'Web, email, infrastructure and human support in Uruguay.' : 'Web, correo, infraestructura y soporte humano en Uruguay.'} {t('footer.subline')}
</p> </p>
</div> </div>
@@ -77,7 +78,7 @@ const legalLinks = [
contacto@hostingdelsur.net contacto@hostingdelsur.net
</a> </a>
</li> </li>
<li>Maldonado, Uruguay</li> <li>{locationText}</li>
</ul> </ul>
</div> </div>
@@ -103,7 +104,7 @@ const legalLinks = [
<div class="mt-12 pt-6 border-t flex flex-col sm:flex-row sm:justify-between gap-3 text-xs" style="border-color: #2A2520; color: #8A8580;"> <div class="mt-12 pt-6 border-t flex flex-col sm:flex-row sm:justify-between gap-3 text-xs" style="border-color: #2A2520; color: #8A8580;">
<p>© {year} Hosting del Sur. {t('footer.copyright')}</p> <p>© {year} Hosting del Sur. {t('footer.copyright')}</p>
<p>Maldonado, Uruguay</p> <p>{locationText}</p>
</div> </div>
</div> </div>
</footer> </footer>
+9 -11
View File
@@ -12,7 +12,6 @@ const { t, whatsappUrl } = Astro.props;
<div class="absolute inset-0 particle-grid" aria-hidden="true"></div> <div class="absolute inset-0 particle-grid" aria-hidden="true"></div>
<div class="absolute inset-0" style="background: linear-gradient(180deg, transparent 0%, var(--hds-bg) 100%);" aria-hidden="true"></div> <div class="absolute inset-0" style="background: linear-gradient(180deg, transparent 0%, var(--hds-bg) 100%);" aria-hidden="true"></div>
<!-- Cuadraditos decorativos (estilo grilla del logo) -->
<div class="absolute top-32 right-8 md:right-16 opacity-50" aria-hidden="true"> <div class="absolute top-32 right-8 md:right-16 opacity-50" aria-hidden="true">
<svg width="120" height="120" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <svg width="120" height="120" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="12" height="12" fill="#EE7623" rx="1"/> <rect x="0" y="0" width="12" height="12" fill="#EE7623" rx="1"/>
@@ -41,43 +40,42 @@ const { t, whatsappUrl } = Astro.props;
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="max-w-4xl"> <div class="max-w-4xl">
<div class="eyebrow mb-7"> <div class="eyebrow mb-7">
<span>Premium hosting · Desde 2000</span> <span>{t('hero.eyebrow')}</span>
</div> </div>
<h1 class="font-display leading-[0.98] mb-8" style="font-size: clamp(2.75rem, 7vw, 5.5rem); color: var(--hds-fg); letter-spacing: -0.025em; font-weight: 400;"> <h1 class="font-display leading-[0.98] mb-8" style="font-size: clamp(2.75rem, 7vw, 5.5rem); color: var(--hds-fg); letter-spacing: -0.025em; font-weight: 400;">
Alojamiento en la nube<br/> {t('hero.title')}
que te <span style="color: var(--color-hds-naranja); font-style: italic;">conoce</span>.
</h1> </h1>
<p class="text-lg md:text-xl leading-relaxed mb-10 max-w-2xl" style="color: var(--hds-fg-soft);"> <p class="text-lg md:text-xl leading-relaxed mb-10 max-w-2xl" style="color: var(--hds-fg-soft);">
Soporte humano senior en Maldonado, Uruguay. Del otro lado hay una persona que conoce tu proyecto, no un ticket automático. La misma tecnología que los gigantes, con la cercanía que nos diferencia. {t('hero.body')}
</p> </p>
<div class="flex flex-col sm:flex-row gap-4 mb-14"> <div class="flex flex-col sm:flex-row gap-4 mb-14">
<a href="/planes/" class="btn-primary"> <a href="/planes/" class="btn-primary">
Ver planes {t('hero.ctaPrimary')}
</a> </a>
<a href={whatsappUrl} target="_blank" rel="noopener noreferrer" class="btn-secondary"> <a href={whatsappUrl} target="_blank" rel="noopener noreferrer" class="btn-secondary">
Hablar por WhatsApp {t('hero.ctaSecondary')}
</a> </a>
</div> </div>
<div class="flex flex-wrap items-center gap-x-8 gap-y-3 text-sm" style="color: var(--hds-fg-muted);"> <div class="flex flex-wrap items-center gap-x-8 gap-y-3 text-sm" style="color: var(--hds-fg-muted);">
<span class="flex items-center gap-2"> <span class="flex items-center gap-2">
<span style="color: var(--color-hds-naranja);">●</span> <span style="color: var(--color-hds-naranja);">●</span>
26+ años {t('hero.badge26')}
</span> </span>
<span class="flex items-center gap-2"> <span class="flex items-center gap-2">
<span style="color: var(--color-hds-naranja);">●</span> <span style="color: var(--color-hds-naranja);">●</span>
Uptime 99.9% {t('hero.badgeUptime')}
</span> </span>
<span class="flex items-center gap-2"> <span class="flex items-center gap-2">
<span style="color: var(--color-hds-naranja);">●</span> <span style="color: var(--color-hds-naranja);">●</span>
Soporte humano {t('hero.badgeSupport')}
</span> </span>
<span class="flex items-center gap-2"> <span class="flex items-center gap-2">
<span style="color: var(--color-hds-naranja);">●</span> <span style="color: var(--color-hds-naranja);">●</span>
Maldonado, Uruguay {t('hero.badgeLocation')}
</span> </span>
</div> </div>
</div> </div>
+20 -10
View File
@@ -7,11 +7,15 @@ export const ui = {
'nav.tutorials': 'Instructivos', 'nav.tutorials': 'Instructivos',
'nav.contact': 'Contacto', 'nav.contact': 'Contacto',
'nav.cta': 'Hablar por WhatsApp', 'nav.cta': 'Hablar por WhatsApp',
'hero.eyebrow': 'Tu proveedor de soluciones digitales', 'hero.eyebrow': 'Premium hosting · Desde 2000',
'hero.title': 'Alojamiento en la nube, cerca y en tu idioma', 'hero.title': 'Alojamiento en la nube que te conoce.',
'hero.body': 'Olvidate de las complejidades técnicas. Nuestro equipo te brinda asesoramiento y soporte personalizado para que tu proyecto en la web funcione sin complicaciones. Te brindamos la misma tecnología que los gigantes tecnológicos, con una atención cercana y personalizada.', 'hero.body': 'Soporte humano senior en Maldonado, Uruguay. Del otro lado hay una persona que conoce tu proyecto, no un ticket automático. La misma tecnología que los gigantes, con la cercanía que nos diferencia.',
'hero.ctaPrimary': 'Hablar con un humano', 'hero.ctaPrimary': 'Ver planes',
'hero.ctaSecondary': 'Ver servicios', 'hero.ctaSecondary': 'Hablar por WhatsApp',
'hero.badge26': '26+ años',
'hero.badgeUptime': 'Uptime 99.9%',
'hero.badgeSupport': 'Soporte humano',
'hero.badgeLocation': 'Maldonado, Uruguay',
'diff.eyebrow': 'La diferencia', 'diff.eyebrow': 'La diferencia',
'diff.title': 'Por qué elegirnos', 'diff.title': 'Por qué elegirnos',
'diff.subtitle': 'Tu proyecto merece un socio tecnológico, no solo un hosting.', 'diff.subtitle': 'Tu proyecto merece un socio tecnológico, no solo un hosting.',
@@ -43,6 +47,7 @@ export const ui = {
'ctaFinal.body': 'Escribinos por WhatsApp y te respondemos personas reales, no bots.', 'ctaFinal.body': 'Escribinos por WhatsApp y te respondemos personas reales, no bots.',
'ctaFinal.button': 'Hablar por WhatsApp', 'ctaFinal.button': 'Hablar por WhatsApp',
'footer.tagline': 'Alojamiento en la nube, cerca y en tu idioma.', 'footer.tagline': 'Alojamiento en la nube, cerca y en tu idioma.',
'footer.subline': 'Web, correo, infraestructura y soporte humano en Uruguay.',
'footer.contact': 'Contacto', 'footer.contact': 'Contacto',
'footer.nav': 'Navegación', 'footer.nav': 'Navegación',
'footer.legal': 'Legal', 'footer.legal': 'Legal',
@@ -60,11 +65,15 @@ export const ui = {
'nav.tutorials': 'Tutorials', 'nav.tutorials': 'Tutorials',
'nav.contact': 'Contact', 'nav.contact': 'Contact',
'nav.cta': 'Chat on WhatsApp', 'nav.cta': 'Chat on WhatsApp',
'hero.eyebrow': 'Your digital solutions provider', 'hero.eyebrow': 'Premium hosting · Since 2000',
'hero.title': 'Cloud hosting, close by and in your language', 'hero.title': 'Cloud hosting that knows you.',
'hero.body': 'Forget technical complexity. Our team gives you personalized advice and support so your web project runs smoothly. We offer the same technology as the tech giants, with a close, human touch.', 'hero.body': 'Senior human support in Maldonado, Uruguay. There is a real person who knows your project on the other side, not an automatic ticket. The same technology as the tech giants, with the closeness that sets us apart.',
'hero.ctaPrimary': 'Talk to a human', 'hero.ctaPrimary': 'View plans',
'hero.ctaSecondary': 'See services', 'hero.ctaSecondary': 'Chat on WhatsApp',
'hero.badge26': '26+ years',
'hero.badgeUptime': '99.9% uptime',
'hero.badgeSupport': 'Human support',
'hero.badgeLocation': 'Maldonado, Uruguay',
'diff.eyebrow': 'The difference', 'diff.eyebrow': 'The difference',
'diff.title': 'Why choose us', 'diff.title': 'Why choose us',
'diff.subtitle': 'Your project deserves a technology partner, not just a hosting provider.', 'diff.subtitle': 'Your project deserves a technology partner, not just a hosting provider.',
@@ -96,6 +105,7 @@ export const ui = {
'ctaFinal.body': 'Message us on WhatsApp and real people will reply, not bots.', 'ctaFinal.body': 'Message us on WhatsApp and real people will reply, not bots.',
'ctaFinal.button': 'Chat on WhatsApp', 'ctaFinal.button': 'Chat on WhatsApp',
'footer.tagline': 'Cloud hosting, close by and in your language.', 'footer.tagline': 'Cloud hosting, close by and in your language.',
'footer.subline': 'Web, email, infrastructure and human support in Uruguay.',
'footer.contact': 'Contact', 'footer.contact': 'Contact',
'footer.nav': 'Navigation', 'footer.nav': 'Navigation',
'footer.legal': 'Legal', 'footer.legal': 'Legal',