Hey folks,
I’m on Ghost 6.3.1 (self-hosted) with the publication language set to es. The theme is a light fork of Journal (no structural changes). Goal: have Portal (restricted post CTA + auth modals) show Spanish natively.
What I’m seeing
- On restricted posts I still get: “This post is for paying subscribers only” (and other Portal strings in English), even though the Portal script tag has
data-locale="es".
What I’ve already tried
-
Theme i18n for theme strings (
locales/es.json,{{t}}) — works for theme UI, but I know it doesn’t affect Portal. -
Confirmed the theme uses
{{ghost_head}}(noexcludes="portal"). -
Code Injection is empty (no custom Portal script).
-
No
"portal"orportal:urloverride inconfig.production.json. -
Restarted Ghost, cleared caches/CDN, tested in private/incognito.
-
Updated to latest 6.x via
ghost update. -
When I fetch the raw HTML, the Portal script still comes from a
/ghost/portal@~2.55/...URL (not the npm canonical@tryghost/portal@~2/...) and strings remain in English. -
As a temporary server-rendered workaround, I overrode
partials/content-cta.hbswith Spanish text (same classes), but I’d like the proper native Portal i18n behavior.
Ask
-
Why would 6.x still load Portal from
/ghost/portal@…instead of the canonical@tryghost/portal@…, and how do I make Portal reliably use Spanish natively? -
Is there a documented way (setting/flag) to force the canonical Portal script or locale from the app itself (without Nginx rewrites or JS replacement)?