Skip to content

Fix incorrect language prefix in menu URLs#1840

Open
leemojiang wants to merge 1 commit intoadityatelange:masterfrom
leemojiang:fix-lang-url-bug
Open

Fix incorrect language prefix in menu URLs#1840
leemojiang wants to merge 1 commit intoadityatelange:masterfrom
leemojiang:fix-lang-url-bug

Conversation

@leemojiang
Copy link

What does this PR change? What problem does it solve?

This PR fixes an issue with incorrect language prefix placement in menu URLs when using a baseURL that includes a subpath (e.g., /blog/). Previously, when using multilingual configurations (e.g., zh and en), the zh language prefix was incorrectly inserted before the baseURL subpath, resulting in URLs like:
https://leemojiang.github.io/zh/blog/archives/

Instead of the expected:
https://leemojiang.github.io/blog/zh/archives/

What changed
Detect external links (http://, https://, protocol-relative) and skip Hugo internal URL rewriting for them.
For internal links:
Normalize menu paths by removing a leading /.
Remove the baseURL subpath prefix from menu entries when present (to avoid duplicated /blog).
Rebuild links using site.Home.RelPermalink + menu_path so language prefix and subpath order is always correct.
Keep active menu highlighting based on normalized RelPermalink comparison to avoid false mismatches.
This improves compatibility for multilingual deployments under subpaths (for example, GitHub Pages project sites).

You can see an example of the fixed behavior on my blog: https://leemojiang.github.io/blog/


Was the change discussed in an issue or in the Discussions before?

Yes, this issue is related to #1661, where users reported incorrect URL generation when using a baseURL with a subpath and multiple languages. A similar issue is also discussed in another theme #682.


PR Checklist

  • This change adds/updates translations and I have used the template present here.
  • I have enabled maintainer edits for this PR.
  • I have verified that the code works as described/as intended.
  • This change does not include any CDN resources/links.
  • This change does not include any unrelated scripts such as bash and python scripts.
  • This change updates the overridden internal templates from HUGO's repository.

@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant