You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js Layout中客户端组件useTranslation客户端渲染失效问题

编辑:该问题在next-translate的公开议题中有记录,且与next-translate-plugin的相关议题关联

版本信息

  • next-translate: ^2.6.2
  • next-translate-plugin: ^2.6.2
  • next: 14.0.3
  • node: 18.17.1
  • yarn: 1.22.19

问题现象

在Next.js的App Router中,我在Layout组件里引入了一个客户端组件,该组件使用next-translate的useTranslation钩子。服务端渲染时翻译内容显示正常,但客户端渲染时翻译内容无法加载。奇怪的是,这个客户端组件在page.tsx中使用时功能完全正常。

相关代码示例

客户端组件(TestClient.tsx)

'use client';
import useTranslation from 'next-translate/useTranslation';
export const TestClient = () => {
  const { t } = useTranslation('common');
  return <div>This is client component, translation value: {t('test')}</div>;
};

服务端组件(TestServer.tsx)

import useTranslation from "next-translate/useTranslation";
export const TestServer = () => {
  const { t } = useTranslation("common");
  return <div>This is server component, translation value: {t("test")}</div>;
};

根布局(layout.tsx)

import { TestClient } from "@/components/TestClient";
import { TestServer } from "@/components/TestServer";
export default function RootLayout({ children}: {children: React.ReactNode;}) {
  return (
    <html lang="en">
      <body>
        <h2>Inside LAYOUT</h2>
        <TestClient />
        <TestServer />
        {children}
      </body>
    </html>
  );
}

页面组件(page.tsx)

import { TestClient } from "@/components/TestClient";
import { TestServer } from "@/components/TestServer";
const Page= () => {
  return (
    <div>
      <h2>Inside PAGE</h2>
      <TestServer />
      <TestClient />
    </div>
  );
};

服务端渲染截图(浏览器禁用JavaScript)

服务端渲染时翻译正常显示

客户端渲染截图(浏览器启用JavaScript)

客户端渲染时翻译未加载

复现方式

  • 可通过指定仓库复现问题
  • 也可通过基于该仓库的Codesandbox在线示例复现

内容的提问来源于stack exchange,提问作者ZecKa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:14:59