SolidJSS
SolidJSโ€ข2y agoโ€ข
6 replies
Rvespula

Context with Meta

Hi there! ๐Ÿ™‚
I have a problem. It seems that when I try to create a custom MetaTitle with SolidMeta, the language context is not being accessed in SSR. Here is my implementation:


// Component
import { Title } from "@solidjs/meta";
import type { JSX } from "solid-js";

interface IMetaTitle {
  children: JSX.Element;
}
export function MetaTitle(props: IMetaTitle) {
  return <Title>{`${props.children} | WebsiteName`}</Title>;
}


import { MetaProvider } from "@solidjs/meta";
import type { Component, JSX } from "solid-js";
import { Suspense } from "solid-js";
import { Toaster } from 'solid-toast';
import { LanguageTagProvider, useLocationLanguageTag } from "~/shared/i18n";
import { sourceLanguageTag } from "~/shared/paraglide/runtime";


interface IProviders {
  /** Content that will be wrapped by providers. */
  readonly children: JSX.Element;
}

export const Providers: Component<IProviders> = (props) => {
  const url_language_tag = useLocationLanguageTag();
  const language_tag = url_language_tag ?? sourceLanguageTag;

  return (
    <LanguageTagProvider value={language_tag}>
      <MetaProvider>
        <Suspense>{props.children}</Suspense>
        <Toaster />
      </MetaProvider>
    </LanguageTagProvider>
  );
};



// route
import { MetaTitle } from "~/shared/components/metatitle";
import * as m from "~/shared/paraglide/messages.js";

export default function EmailValidationRoute() {
  return (
    <>
      <MetaTitle>{m.meta_route_email_validation()}</MetaTitle>
    </>
  );
}


ERROR:
 throw new Error("LanguageTagCtx not found");
              ^

Error: LanguageTagCtx not found


this is the context for paraglide:
https://github.com/thetarnav/paraglide-solidstart-hackernews/blob/main/src/i18n/adapter.ts
GitHub
Example hackernews app built with SolidStart and Paraglide-js for i18n. - thetarnav/paraglide-solidstart-hackernews
paraglide-solidstart-hackernews/src/i18n/adapter.ts at main ยท theta...
Was this page helpful?