Next.jsで一部のページのみのlangを変更したい
作成日
更新日
ほぼ日本語で、一部のプライバシーポリシーページでのみ英語にしたかったので、そこだけ動的に実装。
hooks/useSetHtmlLang.ts
"use client";
import { useEffect } from "react";
export function useSetHtmlLang(lang: string) {
useEffect(() => {
const originalLang = document.documentElement.lang;
if (originalLang !== lang) {
document.documentElement.lang = lang;
}
return () => {
// アンマウント時に元に戻す場合
document.documentElement.lang = originalLang;
};
}, [lang]);
}
使いたいページのコンポーネントを"use client"
をつけて使う。
components/PrivacyPolicy.tsx
"use client";
import { useSetHtmlLang } from "@/hooks/useSetHtmlLang";
export function PrivacyPolicy({ lang, content }: { lang: string; content: React.ReactNode }) {
useSetHtmlLang(lang);
return (
<main className="max-w-4xl mx-auto">
<div className="markdown-content md-content markdown-body">
<div className="px-2">
{content}
</div>
</div>
</main>
);
}

公開日
更新日