Portal strings still in English even with site language set to es (Ghost 6.3.1, self-hosted)

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}} (no excludes="portal").

  • Code Injection is empty (no custom Portal script).

  • No "portal" or portal:url override in config.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.hbs with 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)?

That string is not part of portal. (Portal is only the popup sign-in/management app.) It can be overridden by your theme, but perhaps it is not. You can override the default “call to action” text by putting this file (or rather, an edited version of it) into your theme’s partials folder, named content-cta.hbs

1 Like

Thank you very much for your help. We were able to translate most of the terms except for the “Subscribe” button in the header, which we couldn’t find in any file.

We also changed “jamie@example.com” in default.hbs to another text, but it hasn’t changed.

Without knowing which theme this is, it’s hard to advise. :slight_smile:

The theme we are using is Journal. Sorry for not telling you earlier.