Skip to content

Redirect unsupported locale prefixes to English - #5588

Open
zandonella wants to merge 1 commit into
WordPress:mainfrom
zandonella:575-unsupported-locale-redirect
Open

Redirect unsupported locale prefixes to English#5588
zandonella wants to merge 1 commit into
WordPress:mainfrom
zandonella:575-unsupported-locale-redirect

Conversation

@zandonella

Copy link
Copy Markdown

Fixes

Fixes #575 by @sarayourfriend

Description

Currently, visiting a path with an unsupported, locale-shaped prefix (e.g. openverse.org/cn) matches no route and renders a 404 page.

This PR adds a global route middleware that detects these paths, strips the locale-shaped prefix, and redirects to the English equivalent. On the page the visitor lands on, a one-time banner explains that Openverse isn't translated into the requested language yet and links to the project page where they can contribute a translation.

Details:

  • getUnsupportedLocaleRedirect util detects a locale-shaped first path segment (two letters, optional hyphenated region — e.g. cn, es-ar) that isn't in the configured locale set, and returns the prefix-stripped (English) path.
  • unsupported-locale.global middleware performs the redirect for unmatched routes and controls banner visibility.
  • The ui store persists an unsupportedLocaleRedirect flag so it survives the server-side redirect, then consumes it on the landing page to show the transient banner once. The banner is hidden on any subsequent navigation.
  • New VUnsupportedLocaleBanner component, wired into VBanners, with new notification.unsupportedLocale.* strings.

Testing Instructions

  1. Run the frontend locally.
  2. Visit an unsupported, locale-shaped path such as http://localhost:8443/cn (or /cn/search?q=cat).
  3. Verify you are redirected to the English equivalent (/ or /search?q=cat) rather than seeing a 404, and that the "language not supported" banner appears once.
  4. Navigate elsewhere and confirm the banner disappears and does not reappear.
  5. Confirm a supported locale (e.g. /es) and a genuinely unknown path (e.g. /foobar) are unaffected.
  6. Run the unit tests: ov just frontend/run test:unit unsupported-locale.

Checklist

  • My pull request has a descriptive title (not a vague title likeUpdate index.md).
  • My pull request targets the default branch of the repository (main) or a parent feature branch.
  • My commit messages follow best practices.
  • My code follows the established code style of the repository.
  • I added or updated tests for the changes I made (if applicable).
  • I added or updated documentation (if applicable).
  • I tried running the project locally and verified that there are no visible errors.
  • I ran the DAG documentation generator (ov just catalog/generate-docs for catalog
    PRs) or the media properties generator (ov just catalog/generate-docs media-props
    for the catalog or ov just api/generate-docs for the API) where applicable.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Redirects paths with an unsupported locale-shaped prefix (e.g. `/cn`) to the English equivalent and shows a one-time banner noting the missing translation.
@zandonella
zandonella requested a review from a team as a code owner July 7, 2026 07:36
@zandonella
zandonella requested review from dhruvkb and obulat July 7, 2026 07:36
@openverse-bot openverse-bot added 🧱 stack: frontend Related to the Nuxt frontend 🟩 priority: low Low priority and doesn't need to be rushed 🛠 goal: fix Bug fix 🕹 aspect: interface Concerns end-users' experience with the software labels Jul 7, 2026
@openverse-bot openverse-bot moved this to 👀 Needs Review in Openverse PRs Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🕹 aspect: interface Concerns end-users' experience with the software 🛠 goal: fix Bug fix 🟩 priority: low Low priority and doesn't need to be rushed 🧱 stack: frontend Related to the Nuxt frontend

Projects

Status: 👀 Needs Review

Development

Successfully merging this pull request may close these issues.

Unsupported language codes redirect to 404

2 participants