Next.js i18n国际化实现方案(支持ReactNode类型、可传参)

文章介绍了在Next.js项目中实现国际化的方法,包括Next.js自v10.0.0版本后的内置支持,以及按路由控制语言切换的实现思路。作者创建了一个简单的hook来处理语言切换,支持ReactNode,无需额外的国际化库。示例中展示了如何配置next.config.js,创建语言文件,以及使用Link组件进行语言切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

抛开Next.js框架不谈,想必其他项目也经常会遇到国际化方案,大概逻辑都是差不多的,只是说这次本人碰巧在Next上的项目有这样的需求,并记录下来。

实现思路:

其实不从代码角度上讲的话,无非是引入一个“变量”,并且所有文本都依赖于这个“变量”,然后再提前配置好一系列的语言文件,只要这个“变量”变了,那我就利用这个变量做出映射,从而达到切换语言的效果,只是说不同方案,对这个“变量”呈现的方式不一样而已。对于变量的呈现方式如下:

方案一:
按域名来控制,就像react官网一样,比如说你要看英文的,那你就访问reactjs.org,如果你要看中文的,那你就访问zh-hans.reactjs.org,如果你要看韩文的,那你就访问ko.reactjs.org,如果你要看…

发现没有,其实就是不同语言,就访问不同的域名

方案二:

按路由来控制,比如你要看英文的,那你就访问http://localhost:8080/en/admin/user,如果你要看中文的,那你就访问http://localhost:8080/zh/admin/user,如果你要看韩文的,那你访问http://localhost:8080/ko/admin/user,如果你要看…

这种其实就是把语言变量放在了路由上

正文

说了上面那么多,总算可以正文了~~
首先Next在版本大于等于v10.0.0后本身就支持国际化,并不需要特意引入网上那些杂七杂八的插件,什么react-intl啊、react-i18next啊、react-i18n-auto啊等等,不是说他们不好,而是我感觉没必要,所以就自己写一个简单的hook demo就好了。大家也可以直接自己看官网,下面的也是按照官网的快速上手来的

修改next项目中的next.config.js配置文件:

// next.config.js
module.exports = {
   
		i18n: {
   
		    defaultLocale: 'zh', // 默认语言
		    locales: ['en', 'zh'], // 语言变量
		  },
		  ...others
  }

当然我这里采用的是上诉的方案二,按路由来控制,官网中有写到配置域名,也就是按域名来控制语言

然后新增语言文件

// en.jsx
const EN_JSON = {
   
	"app.title":"international language"
}

// zh.jsx
const ZH_JSON = {
   
	"app.title":"国际化语言"
}
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值