跳到主要内容

next国际化语言方案

  • next-i18next: 一款流行的 Next.js 国际化插件,它提供了丰富的功能,包括多语言路由、服务器端渲染和静态生成的支持,以及简单的翻译文件管理。

  • next-intl: 用于 Next.js 的国际化插件,它提供了基于React Intl的国际化解决方案,支持多语言文本和格式化。

  • next-translate: 这个插件为 Next.js 提供了简单的国际化解决方案,支持静态生成和服务器端渲染,并且易于配置和使用。

next-intl使用​

next-intl从扩展和使用灵活性上都非常不错

配置next 国际化中间件​

中间件与请求的区域设置匹配,并相应地处理重定向和重写。

注意事项​

由于 next 项目支持客户端渲染和服务端渲染,所以使用 next-intl 的方式也是有区别的,如果我们在页面中出现 next-intl 相关的服务端渲染报错, next-intl提供了NextIntlClientProvider用于为客户端组件提供配置, 可以在页面同级添加 layout.tsx

  • 因为此实现是基于nextjs嵌套布局实现的方案
  • 需要对app目录进行改造,src\app\[locale]
  • 加一层[locale] 目录
tsx
import {NextIntlClientProvider, useMessages} from 'next-intl';

export default function LocaleLayout({children, params: {locale}}) {
const messages = useMessages();

return (
<NextIntlClientProvider lang={locale} messages={messages}>
{children}
</NextIntlClientProvider>
);
}