When building a web application, you can set the lang attribute of the <html> tag to explicitly declare the language used on your pages. For example, an app made for the Japanese market:
<html lang="ja">Note: For English-speaking countries, replace ja with en.
This concise article will show you how to specify the lang attribute for a Next.js app. If you’re using Next.js 13+ with App Router (the /app directory), see the first section. If you prefer Pages Router (the /pages directory), see the later section.
Set HTML lang attribute with App Router (/app directory)
The place to focus on is the app/layout.js or app/layout.tsx file in your project. Look at the html tag and edit the lang attribute right there:
export default function RootLayout({
children,
}: {
children: React.ReactNode
}) {
return (
// Edit html lang attribute to match your language here
<html lang="ja">
<body className={inter.className}>{children}</body>
</html>
)
}Screenshot:

Set HTML lang attribute with Pages Router (/pages directory)
1. In the pages folder of your project, create a new file called _document.js if it doesn’t exist (or _document.ts if you’re using TypeScript). The name must be absolutely correct.
2. Add the following code to _document.js:
import { Html, Head, Main, NextScript } from 'next/document'
export default function Document() {
return (
<Html lang='ja'>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}Replace ja (this is the English code) with the language code, you want. You should keep all other things unchanged. The <Html>, <Head/>, <Main/>, and <NextScript /> components are required for the page to be properly rendered.
File structure:

3. Now boot your app up and use Chrome DevTools to check the result:

That’s it. If you find something missing or outdated, please comment. We are happy to hear from you.