设置文档语言

为无障碍和 SEO 声明页面语言

问题

网页内容为法语,但 HTML 文档本身未标明语言(例如,<html lang="en">)。未声明语言会导致屏幕阅读器用英语发音法语内容,也会阻止浏览器自动翻译,并影响搜索引擎的索引。

解决方案

在根布局组件中,从 URL 读取 lang 参数。将该 lang 参数传递给 <html> 元素的 lang 属性。这样可以明确向浏览器和辅助技术声明整个文档的语言。

步骤

1. 在根布局中获取 lang 参数

在 Next.js App Router 中,动态分段(如 [lang])下的 layout.tsx 文件会自动接收该分段的值作为 params 属性。

2. 在 <html> 元素上设置 lang 属性

修改 app/[lang]/layout.tsx 文件,使其接收 params 属性,并将其 lang 属性应用到 <html> 标签的 lang 属性上。

// app/[lang]/layout.tsx

export default function RootLayout({
  children,
  params,
}: {
  children: React.ReactNode;
  params: { lang: string };
}) {
  return (
    <html lang={params.lang}>
      <body>{children}</body>
    </html>
  );
}

这样可以确保对 /fr/about 的请求渲染出的页面以 <html lang="fr"> 开头。此简单更改能正确告知屏幕阅读器、搜索引擎和浏览器页面内容所用的语言。