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

如何在Next.js项目中集成Tolgee与next-i18next?

在Next.js中集成Tolgee与next-i18next实现上下文编辑功能

我基于next-i18next搭建了一个Next.js多语言应用,现在想接入Tolgee平台来使用它的上下文编辑功能。查了官方文档,只找到react-i18next和原生i18next的集成方案,于是自己尝试在pages/index.tsx中添加了以下代码,但完全不起作用:

import { withTolgee } from '@tolgee/i18next';
import i18n from 'i18next';
import { UI } from '@tolgee/ui';

withTolgee(i18n, {
    apiUrl: process.env.REACT_APP_TOLGEE_API_URL,
    apiKey: process.env.REACT_APP_TOLGEE_API_KEY,
    ui: UI
}).init({
    supportedLngs: ['en', 'de'],
    fallbackLng: 'en'
});

请问该如何正确在Next.js应用中集成Tolgee与next-i18next?


正确集成步骤

1. 确认依赖安装

确保已安装必要的包:

npm install @tolgee/i18next @tolgee/ui next-i18next i18next react-i18next

2. 修改next-i18next配置文件

next-i18next的初始化逻辑需要在专属配置文件中(通常是next-i18next.config.js或.ts)集成Tolgee,而不是在页面文件中单独初始化。以下是完整配置示例:

// next-i18next.config.ts
import type { NextI18NextConfig } from 'next-i18next';
import { withTolgee } from '@tolgee/i18next';
import { UI } from '@tolgee/ui';

const config: NextI18NextConfig = {
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'de'],
  },
  // 启用Tolgee的关键:包装i18n实例
  use: [
    withTolgee({
      apiUrl: process.env.NEXT_PUBLIC_TOLGEE_API_URL,
      apiKey: process.env.NEXT_PUBLIC_TOLGEE_API_KEY,
      ui: UI,
      // 仅在开发环境启用Tolgee,避免生产环境暴露编辑功能
      enabled: process.env.NODE_ENV === 'development',
    }),
  ],
};

export default config;

3. 调整环境变量命名

Next.js客户端环境变量需要以NEXT_PUBLIC_为前缀,所以把原来的REACT_APP_*改为:

# .env.local
NEXT_PUBLIC_TOLGEE_API_URL="你的Tolgee API地址"
NEXT_PUBLIC_TOLGEE_API_KEY="你的Tolgee项目API密钥"

4. 在_app.tsx中确保正确初始化

确保_app.tsx中使用appWithTranslation包裹根组件,这是next-i18next的标准用法:

// pages/_app.tsx
import { appWithTranslation } from 'next-i18next';
import type { AppProps } from 'next/app';

function MyApp({ Component, pageProps }: AppProps) {
  return <Component {...pageProps} />;
}

export default appWithTranslation(MyApp);

5. 验证集成效果

启动开发服务器后,访问应用页面,应该能看到Tolgee的浮动编辑按钮,点击即可开启上下文翻译编辑功能。

原代码失效原因

直接在index.tsx中初始化i18n会和next-i18next的内置初始化流程冲突——next-i18next会在应用启动时自动初始化i18n实例,单独调用withTolgee(i18n).init()会覆盖或干扰原有配置,导致集成失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:36:34