backstage/backstage

Support internationalization for title param on plugins and PageBlueprints

Aberta

#34.139 aberto em 6 de mai. de 2026

 (6 comentários) (1 reação) (0 responsável)TypeScript (5.277 forks)batch import
area:coregood first issuepriority:contrib-welcometype:suggestion

Métricas do repositório

Stars
 (26.101 estrelas)
Métricas de merge de PR
 (Mesclagem média 15d) (121 fundiu PRs em 30d)

Description

📜 Issue Labels

  • Please familiarize yourself with the issue labels used in this project: LABELS.md

🔎 Search Terms

internationalization, i18n, PageBlueprint internationalization, title internationalization

🗃️ Project Area

Unknown

🔖 Need

PageBlueprint's title param is typed as string and evaluated at module load, outside React context. It feeds the page header and auto-discovered sidebar item (since NavItemBlueprint is deprecated), none of which can participate in the hook-based useTranslationRef system. With the language toggle enabled, the rest of the UI translates while titles stay frozen in the author's original string. Same gap on EntityContentBlueprint, SubPageBlueprint, and NavItemBlueprint. Config overrides are a per-deployment static swap, not i18n.

📝 Proposal

Allow title to accept either the current string or a translation binding, resolved at render time:

PageBlueprint.make({
  params: {
    path: '/foo',
    title: { ref: fooTranslationRef, key: 'fooPage.title' },
    loader: () => import('./FooPage').then(m => ),
  },
});

Something similar could also make sense for the title param on createFrontendPlugin.

🔄 Alternatives

Auto-generating keys from the extension's identity to make support for translations more implicit could work, though wouldn't remove the need for a translation ref.

Have you read the Code of Conduct?

Are you willing to submit a PR?

Yes, but I would like some more guidance

Guia do colaborador