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

如何通过i18n库动态获取Next.js应用中使用的语言列表?

在Next.js中通过next-i18next动态获取语言列表实现语言选择器

客户端组件实现(支持Pages/App Router)

在客户端组件中,直接使用useTranslation钩子获取已初始化的i18n实例,从中提取语言列表即可:

'use client';

import { useTranslation } from 'next-i18next';

export default function LanguageSelector() {
  const { i18n } = useTranslation();

  const switchLanguage = (language) => {
    i18n.changeLanguage(language);
  };

  return (
    <div className="language-selector">
      {i18n.languages.map((lng) => (
        <button
          key={lng}
          onClick={() => switchLanguage(lng)}
          className={i18n.language === lng ? 'active' : ''}
        >
          {lng.toUpperCase()}
        </button>
      ))}
    </div>
  );
}

这里的i18n.languages就是你在next-i18next.config.js中配置的语言数组,无需手动导入配置文件。点击按钮时调用i18n.changeLanguage()即可切换语言。

Pages Router服务器端获取语言列表

如果是在Pages Router的页面中,可通过getServerSideProps里的req.i18n实例直接获取语言列表,再传递给页面组件:

export async function getServerSideProps({ req }) {
  // 从服务器端i18n实例中获取语言列表
  const languages = req.i18n.languages;
  return { props: { languages } };
}

export default function Home({ languages }) {
  return (
    <div>
      <h1>主页</h1>
      <div>
        {languages.map((lng) => (
          <button key={lng}>{lng}</button>
        ))}
      </div>
    </div>
  );
}

req.i18n是next-i18next自动注入到请求对象中的实例,直接读取其languages属性即可。

App Router服务器组件获取语言列表

在App Router的服务器组件中,可通过createInstance初始化i18n实例来获取语言列表:

import { createInstance } from 'i18next';
import i18nConfig from '../next-i18next.config.js';

export default async function ServerLanguageSelector() {
  const i18nInstance = createInstance();
  await i18nInstance.init(i18nConfig);
  
  return (
    <div>
      {i18nInstance.languages.map((lng) => (
        <span key={lng} className="language-option">{lng}</span>
      ))}
    </div>
  );
}

这里核心是通过i18n库的createInstance方法初始化实例后获取语言列表,符合从库本身获取的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:28