/en/
with neutral versions (avoid explicit content).es-MX
, en-US
)./en/
(and others) only for public pages.perfil.php?name=<slug>&locale=en
; set $g['locale']
from URL (whitelist).$g['locale'] = request_locale_or_default()
; vary $g['url']
and cache keys by locale.__($key, $g['locale'])
; load messages from local/<domain>/i18n/<locale>.php
.profiles_i18n(profile_id, locale, name, description, …)
with fallback to base language.translate_profile
); no admin UI required.hreflang
for each locale; per-locale sitemaps; canonical to each locale URL./en/
with noindex
until populated./admin|/login|/logout|/crons|POST
→ RW; public GET → RO.This order keeps admin untouched, makes public i18n SEO-correct, and the RO server benefits immediately from the heavier read traffic.