refactor(i18n): remove the unused i18n layer - #2465
Open
Subramaniyajothi6 wants to merge 1 commit into
Open
Conversation
utksh1
approved these changes
Aug 6, 2026
utksh1
left a comment
Owner
There was a problem hiding this comment.
Removes unused i18n layer. Clean refactor.
I18nContext exported useTranslation and t(), but nothing ever called them. The only reference anywhere in the frontend was App.tsx importing I18nProvider to wrap the tree. Every UI string is hardcoded English, only an 'en' locale exists, translations carries just 'common' and 'nav', and setLocale is exposed through context with no UI able to reach it. So the layer is scaffolding for a feature that was never built. Removing it rather than wiring it in: reintroducing i18n properly when localisation is actually planned is easier than maintaining a half-present abstraction that looks supported but is not, and whose presence implies strings are already translatable when they are not. Deletes the context and its test, and unwraps the provider from App.tsx. No other module referenced it, so nothing else changes. Verified: no i18n reference remains anywhere in src, tests, docs or configs; tsc clean; quality gate 13 passed / 0 failed; full vitest 64 files / 566 tests pass -- 9 fewer than main's 575, which is exactly the deleted file.
Subramaniyajothi6
force-pushed
the
refactor/remove-dead-i18n-1864
branch
from
August 6, 2026 09:20
4f1c02c to
7793420
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1864
What I found
The issue offers two directions — wire i18n in as a pilot, or remove the layer. Surveying it first:
App.tsximportingI18nProviderto wrap the tree.useTranslationhas zero call sites.enlocale exists;translationscarries justcommonandnav.setLocaleis exposed through context, but no UI can reach it — there is no locale switcher.So this is scaffolding for a feature that was never built, not a partially-adopted one.
(Small correction to the issue text: the file is at
frontend/src/components/I18nContext.tsx, notfrontend/src/context/.)Why removal rather than a pilot
Reintroducing i18n properly when localisation is actually planned is easier than maintaining a half-present abstraction in the meantime. The current state is worse than having nothing: a provider in the tree and a
useTranslationexport imply strings are already translatable, when adopting it would still mean migrating every page, adding the missing keys, and building the switcher.That said, this is a product call as much as a code one. If localisation is on the roadmap and you would rather keep the scaffolding, say so and I will close this in favour of the pilot instead — the survey above is the same either way.
Changes
frontend/src/components/I18nContext.tsxfrontend/testing/unit/components/I18nContext.test.tsx(tests for the deleted module)I18nProviderfromApp.tsxNothing else referenced it, so nothing else changes.
Verification
i18n,useTranslation,setLocale,I18nProvider— acrosssrc,testing,docs, and configs includingquality-gate.cjs. Zero references remain.tsc --noEmit— cleanquality-gate.cjs— 13 passed, 0 failed (its 1 warning is a pre-existing 2000ms animation)vitest run— 64 files, 566 tests passedThat last number is worth stating precisely:
mainruns 65 files / 575 tests. The difference is exactly the one deleted test file and its 9 tests, which is what confirms nothing else depended on the layer.