当前位置: 首页 > news >正文

[特殊字符] useTranslations 客户端使用教程(Next.js + next-intl)

✅ 适用场景

  • 用于 客户端组件(加了 "use client" 声明)
  • 配合 React Hooks 使用翻译
  • 动态渲染、事件响应等需要在客户端处理的地方

📦 安装(如未安装)

npm install next-intl

📁 项目结构参考

.
├── app
│   ├── [locale]
│   │   ├── layout.tsx        # 设置 IntlProvider
│   │   ├── page.tsx
├── messages
│   ├── en.json
│   ├── zh.json

✨ 1. 设置 Provider(app/[locale]/layout.tsx

这是必须步骤,让 useTranslations 能获取到当前语言环境。

import { NextIntlClientProvider, useMessages } from 'next-intl';export default function LocaleLayout({children,params: { locale }
}: {children: React.ReactNode;params: { locale: string };
}) {const messages = useMessages(); // 服务器端提供翻译内容return (<NextIntlClientProvider locale={locale} messages={messages}>{children}</NextIntlClientProvider>);
}

💡 2. 客户端组件中使用 useTranslations

📄 components/Greeting.tsx

'use client';import { useTranslations } from 'next-intl';export default function Greeting() {const t = useTranslations('user'); // 对应 messages/en.json 中的 "user" 命名空间return <p>{t('greeting', { name: 'David' })}</p>;
}

🌍 messages/en.json 示例:

{"user": {"greeting": "Hello, {name}!"}
}

🗣 渲染结果为:Hello, David!


🎉 支持嵌套命名空间

const t = useTranslations();
t('user.greeting', { name: 'Alice' });

📌 注意事项

  • useTranslations只能在客户端组件中使用,必须加 "use client"
  • 如果没有正确设置 NextIntlClientProvider,会抛出错误。
  • 参数占位 {name} 支持动态替换。

✅ 用于按钮、交互、表单等

'use client';import { useTranslations } from 'next-intl';export function SubmitButton() {const t = useTranslations('form');return <button>{t('submit')}</button>;
}

对应 messages:

{"form": {"submit": "Submit"}
}

🧩 示例组合:page.tsx + 客户端组件

// app/[locale]/page.tsx
import Greeting from '@/components/Greeting';export default function HomePage() {return (<div><Greeting /></div>);
}

🧠 总结

用法用于示例函数
getTranslations服务端组件 (page.tsx
, layout.tsx
)
const t = await getTranslations('home')
useTranslations客户端组件 ("use client"
组件)
const t = useTranslations('user')

相关文章:

  • vue3+vite项目中使用Tailwind CSS
  • 深浅拷贝?
  • day 37
  • SWOT 模型:基础框架的应用价值与改进路径
  • day 22 练习——泰坦尼克号幸存者预测
  • Spring boot基础
  • JAVA基础编程练习题--50道
  • 东北某汽车集团云建设:如何用监控易护航云平台系统?
  • C语言初阶--结构体
  • win11+vs2022 安装opencv 4.11.0图解教程
  • ULVAC VWR-400M/ERH 真空蒸发器 Compact Vacuum Evaporator DEPOX (VWR-400M/ERH)
  • 推理模型 vs 非推理模型:核心区别及优劣势解析
  • sd webui 安装sd-webui-TemporalKit 加载报错解决办法
  • 联邦学习与数据隐私保护之间的联系
  • 每日算法-250526
  • 对话魔数智擎CEO柴磊:昇腾AI赋能,大小模型融合开启金融风控新范式
  • python25-递归算法
  • Linux防火墙iptables学习指南!
  • n8n中文版安装指南,使用Docker部署N8N中文版
  • 唯一原生适配鸿蒙电脑的远程控制应用,向日葵正式上线
  • 上海建网站/站长工具seo综合查询访问
  • 2010年4月江苏省03340网站建设与管理答案/网络广告策划书
  • 如何提高网站开发效率/考研最靠谱的培训机构
  • 域名交易网站源代码下载/大数据营销系统软件
  • mstsc做网站/百度图片识别在线使用
  • 浅灰色做网站背景/简述常用的网络营销方法