Add lang, generateStaticParams, and server-only for i18n example (#44597)

Ensures static generation is used and the dictionary is not accidentally used in client components



## Bug

- [ ] Related issues linked using `fixes #number`
- [ ] Integration tests added
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Feature

- [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR.
- [ ] Related issues linked using `fixes #number`
- [ ] [e2e](https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs) tests added
- [ ] Documentation added
- [ ] Telemetry added. In case of a feature if it's used or not.
- [ ] Errors have a helpful link attached, see [`contributing.md`](https://github.com/vercel/next.js/blob/canary/contributing.md)

## Documentation / Examples

- [ ] Make sure the linting passes by running `pnpm build && pnpm lint`
- [ ] The "examples guidelines" are followed from [our contributing doc](https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md)
This commit is contained in:
Tim Neutkens 2023-01-05 17:29:04 +01:00 committed by GitHub
parent ed59ad525a
commit 0f004312d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 7 deletions

View file

@ -0,0 +1,19 @@
import { i18n } from '../../i18n-config'
export async function generateStaticParams() {
return i18n.locales.map((locale) => ({ lang: locale }))
}
export default function Root({
children,
params,
}: {
children: React.ReactNode
params: { lang: string }
}) {
return (
<html lang={params.lang}>
<body>{children}</body>
</html>
)
}

View file

@ -1,7 +0,0 @@
export default function Root({ children }: { children: React.ReactNode }) {
return (
<html>
<body>{children}</body>
</html>
)
}

View file

@ -1,3 +1,4 @@
import 'server-only'
import type { Locale } from './i18n-config'
// We enumerate all dictionaries here for better linting and typescript support