From ba0ff93e88210be15904819b5ee735db69b26765 Mon Sep 17 00:00:00 2001 From: its-mitesh-kumar Date: Sat, 2 May 2026 20:12:41 +0530 Subject: [PATCH 1/3] fix(user-settings): prioritize i18n translation over theme.title for built-in themes Signed-off-by: its-mitesh-kumar --- .../src/components/General/UserSettingsThemeToggle.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx index b7ac5340e4..edd478af5b 100644 --- a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.tsx @@ -142,10 +142,10 @@ export const UserSettingsThemeToggle = () => { const themeId = theme.id; const themeIcon = theme.icon; const themeTitle = - theme.title || - (themeId === 'light' || themeId === 'dark' + themeId === 'light' || themeId === 'dark' ? t(`themeToggle.names.${themeId}`) - : themeId); + : theme.title || themeId; + return ( Date: Sat, 2 May 2026 20:17:03 +0530 Subject: [PATCH 2/3] adding changeset Signed-off-by: its-mitesh-kumar --- .changeset/easy-goats-bow.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/easy-goats-bow.md diff --git a/.changeset/easy-goats-bow.md b/.changeset/easy-goats-bow.md new file mode 100644 index 0000000000..878555832a --- /dev/null +++ b/.changeset/easy-goats-bow.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-user-settings': patch +--- + +Prioritize i18n translation over `theme.title` for built-in light/dark theme names in `UserSettingsThemeToggle`, so that translation overrides are no longer silently ignored. From 8a3aa16ba1229a0f1ee87364ba2067078f5b76d0 Mon Sep 17 00:00:00 2001 From: its-mitesh-kumar Date: Sat, 2 May 2026 20:43:13 +0530 Subject: [PATCH 3/3] updating test Signed-off-by: its-mitesh-kumar --- .../General/UserSettingsThemeToggle.test.tsx | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.test.tsx b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.test.tsx index 9ea632a5cb..af5613f026 100644 --- a/plugins/user-settings/src/components/General/UserSettingsThemeToggle.test.tsx +++ b/plugins/user-settings/src/components/General/UserSettingsThemeToggle.test.tsx @@ -56,4 +56,44 @@ describe('', () => { fireEvent.click(themeButton); expect(themeApi?.getActiveThemeId()).toBe('light-theme'); }); + + it('uses translated name instead of theme.title for built-in light/dark themes', async () => { + const builtInLightTheme: AppTheme = { + id: 'light', + title: 'My Custom Light', + variant: 'light', + Provider: ({ children }) => ( + + {children} + + ), + }; + + const builtInDarkTheme: AppTheme = { + id: 'dark', + title: 'My Custom Dark', + variant: 'dark', + Provider: ({ children }) => ( + + {children} + + ), + }; + + const builtInApiRegistry = TestApiRegistry.from([ + appThemeApiRef, + AppThemeSelector.createWithStorage([builtInLightTheme, builtInDarkTheme]), + ]); + + await renderInTestApp( + + + , + ); + + expect(screen.getByText('Light')).toBeInTheDocument(); + expect(screen.getByText('Dark')).toBeInTheDocument(); + expect(screen.queryByText('My Custom Light')).not.toBeInTheDocument(); + expect(screen.queryByText('My Custom Dark')).not.toBeInTheDocument(); + }); });