Status

Localization

Which pages have been translated into English, Spanish and Portuguese, and which have not.

A snapshot of the English/Spanish/Portuguese translation pass. Every path below is in apps/web-legacy — this work predates web, and none of it has been carried across yet.

This is a record, not a plan

It says what had been translated when the pass finished. If it disagrees with the code, the code is right.

Completed in this phase

  • src/pages/index.tsx
  • src/pages/features.tsx
  • src/pages/free-tools.tsx
  • src/pages/odds-converter.tsx
  • src/pages/referees.tsx
  • src/pages/lineups/index.tsx
  • src/pages/player-stats.tsx
  • src/pages/team-stats.tsx
  • src/pages/stats-explained.tsx
  • src/pages/404.tsx
  • src/pages/odds-api.tsx
  • src/pages/betting-academy/index.tsx
  • src/pages/betting-academy/[slug].tsx
  • src/pages/blog/index.tsx
  • src/pages/blog/[slug].tsx
  • src/pages/lineup-bot.tsx
  • src/pages/build-ups.tsx
  • src/pages/league/index.tsx
  • src/pages/ai-chat.tsx (surface UI localized; tool-status microcopy still mostly English)
  • src/pages/chat-preview-demo.tsx
  • src/pages/assistant.tsx (surface UI localized; tool/status and debug microcopy still mostly English)
  • src/pages/evervault-demo.tsx
  • src/pages/prop-screener.tsx
  • src/pages/outliers.tsx
  • src/pages/prophunter.tsx (surface UI localized; some advanced filter helper text still English)
  • src/pages/team/[teamSlug]/[teamId].tsx (surface and filter UI localized)
  • src/pages/fixture/[fixtureSlug]/[fixtureId].tsx (surface nav/breadcrumb/fallback UI localized)
  • src/pages/player/[playerSlug]/[playerId].tsx (surface and filter UI localized)
  • src/pages/league/[leagueSlug]/[leagueId].tsx (surface nav/breadcrumb/season labels localized)
  • src/components/league-table-section.tsx (table shell labels, tabs display labels, threshold UI localized)
  • src/pages/arghya.tsx
  • src/pages/superadmin/dashboard.tsx
  • src/pages/navbar-demo.tsx
  • src/pages/basketball/index.tsx
  • src/pages/basketball/fixture/[fixtureSlug]/[fixtureId].tsx
  • src/pages/basketball/player/[playerSlug]/[playerId].tsx
  • src/pages/basketball/team/[teamSlug]/[teamId].tsx
  • src/pages/favourites.tsx
  • src/pages/team-screener.tsx
  • src/pages/player-trends.tsx
  • src/pages/team-trends.tsx
  • src/components/trend-card.tsx (trend card labels and date-relative microcopy localized)
  • src/pages/auth/login.tsx
  • src/components/auth/login.tsx
  • src/pages/tipster/dashboard.tsx
  • src/pages/tipster/previews.tsx
  • src/pages/previews/[slug].tsx
  • src/pages/referee/[refereeSlug].tsx (tabs, tables, SEO/FAQ content, and date labels localized)
  • src/components/referees/referee-header.tsx (header badges/stat labels and date labels localized)
  • src/pages/Player-Cards.tsx (fixture picker UI, modal tabs/states, and date labels localized)
  • src/pages/100-club.tsx (filter controls, markets, toasts, states, and details panel localized)
  • src/pages/_app.tsx (locale shell manager updates data-locale on html/body)
  • src/pages/_document.tsx (dynamic <html lang> from locale prefix/cookie)
  • src/components/homepage-right-sidebar.tsx (league standings sidebar labels localized)
  • src/components/recent-tweets.tsx (desktop tweet widget labels and relative-time locale handling localized)
  • src/components/recent-tweets-compact.tsx (mobile tweet widget labels and relative-time locale handling localized)

Validation at the time

tsc --noEmit passed. next lint could not be re-run, because eslint.config.js referenced eslint-plugin-react-refresh, which was not installed.

Excluded, by decision

Internal, admin or low-priority routes, kept out of scope unless revisited.

  • src/pages/assist.tsx
  • src/pages/AGS.tsx
  • src/pages/value-bets.tsx
  • src/pages/tom.tsx
  • src/pages/tom2.tsx
  • src/pages/datavisualiser.tsx
  • src/pages/superadmin/social-export.tsx
  • src/pages/export.tsx
  • src/pages/db.tsx
  • src/pages/tipster/create.tsx
  • src/pages/tipster/edit/[id].tsx
  • src/pages/nav-test.tsx
  • src/pages/api/search/index.tsx (backend API route; no user-facing UI copy)

Remaining in scope

None.

On this page