gatsbyjs / themes

This is a repo for Gatsby's official themes.
138 stars 78 forks source link

Components in wrapPageElement cannot access the current locale #138

Open jasperanders opened 3 years ago

jasperanders commented 3 years ago

I use a Layout Component with a navigation Bar. It is present at every route, so I put it at gatsby-browser.js like so

export const wrapPageElement = ({ element, props }) => {
  return <Layout {...props}>{element}</Layout>
}

No problem so far. If I try to get the locale in the Layout through const { locale } = useLocalization(); I get the wrong locale. This means that my Links redirect wrongly. Am I doing something wrong, or is this a bug?

Cheers

tx0c commented 2 years ago

I am hitting the same issue, within the Layout it seems getting locale from useLocalization always get the hard-coded default en not current user's browsing locale page, not my configured default either; believe it's a BUG

tx0c commented 2 years ago

after a look the code at https://github.com/gatsbyjs/themes/blob/master/packages/gatsby-theme-i18n/src/wrap-page-element.js ; I believe the reason is LocaleProvider is wrapped inside wrapPageElement, and hence beneath the Layout is wrapping, then all elements in Layout is outside of LocaleProvider getting all hard-coded en as default lang,

I strongly believe this plugin should use https://www.gatsbyjs.com/docs/reference/config-files/gatsby-browser/#wrapRootElement instead of wrapPageElement

BTW, it looks like this repo has many months issues and many PRs pending for months, wonder is it going out of maintenance? from this contributors graph it looks like very low activity since this year 2021 comparing last year image

I'd like to make a PR to here but will need some maintainer's response anyway; /cc @LekoArts @theowenyoung ...

cesarvarela commented 2 years ago

Any updates on this? It looks like the Gatsby team is not very interested in supporting themes.