I'm struggling to get the localized not-found
page to work with NextJS 13 (app-dir). I'm following the official guide on internationalization, as well as this solution I have found on GitHub.
The first solution I have tried
[locale]
-- [...not-found]
- page.tsx <- empty page, just calls notFound() (catch-all segment)
-- (browse)
- someFolder1 <- may multiple pages and maybe nested layouts
- layout.tsx
-- (public)
- someFolder2
- layout.tsx
-- (private)
- someFolder3
- layout.tsx
-- layout.tsx
-- not-found.tsx <- should be served for all notFound() errors (including catch-all segment)
The issue with this solution
When I call the notFound
method from any of the route groups or visit an unmatched route; I receive an error stating: Unsupported Server Component type: Null
. What seems pretty strange since both files definitely have a react component as default export.
import { notFound } from "next/navigation";
export default function CatchAllUnmatched(): JSX.Element {
notFound();
return <></>;
}
The other solution I have tried
I also tried to append a header to each response via a custom X-Language-Preference
property I am adding inside my middleware file. In doing so I have moved the root layout as direct descendant of the app folder and retrieved the locale as follows:
export const getLocale = cache((): Language => {
const preference = headers().get("X-Language-Preference");
return (preference ?? fallbackLanguage) as Language;
});
The issue with this solution
The problem in this approach is that the lang
property on the main html tag does not reset on client side navigation from /de
to /fr
for example. Also the 404 page is only displayed when an unmatched route is visited, calling the notFound
method still results in the same error. So this solution is not viable as well.
What kind of answer would help me?
Any resources that display a real world example of a working internationalization example including a multilingual not found page, preferably also using route groups with nested layouts.
Possible reasons why I am encountering the error
Unsupported Server Component type: Null
when both files definitely have a react component as default export.
If you need more context, code or anything is unclear about the general setup, just comment and I'll update the original question to fit the requirements.