next-i18next 翻译在故事书中不起作用,控制台日志丢失键

Posted

技术标签:

【中文标题】next-i18next 翻译在故事书中不起作用,控制台日志丢失键【英文标题】:next-i18next translation not working in storybook, console logs missingKey 【发布时间】:2021-12-17 00:02:30 【问题描述】:

我正在设置故事书,我正在使用next-i18next 进行翻译。我是这样设置的:

// .storybook/i18n.js
import i18n from 'i18next';
import  initReactI18next  from 'react-i18next';

i18n.use(initReactI18next).init(
  fallbackLng: 'de',
  debug: true,
);

export default i18n;
// .storybook/preview.js
import  StoreMall  from '../components/layouts/StoreMall';
import  I18nextProvider  from 'react-i18next';
import i18n from './i18n';
import  ThemeProvider  from '@material-ui/core/styles';
import  jamesTheme  from '../components/colors';
import  themes  from '@storybook/theming';
import CssBaseline from '@material-ui/core/CssBaseline';

export const parameters = 
  // ...
;

export const decorators = [
  (Story) => (
    <I18nextProvider i18n=i18n>
      <ThemeProvider theme=jamesTheme>
        <CssBaseline />
        <StoreMall>Story()</StoreMall>
      </ThemeProvider>
    </I18nextProvider>
  ),
];

// .storybook/main.js
const path = require('path');

module.exports = 
  stories: ['../components/**/*.stories.js', '../components/**/*.stories.mdx'],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    'storybook-dark-mode',
  ],
  webpackFinal: async (config,  isServer ) => 
    config.resolve.modules = [path.resolve(__dirname, '..'), 'node_modules'];
    config.resolve.alias = 
      ...config.resolve.alias,
      '@': path.resolve(__dirname, '../components'),
      store: path.resolve(__dirname, '../utils/stores'),
      dummy: path.resolve(__dirname, '../utils/dummy'),
    ;
    if (!isServer) 
      config.node = 
        fs: 'empty',
      ;
    
    return config;
  ,
;

现在在我使用翻译的任何地方,它都没有被翻译,并且控制台中会显示这种类型的警告:

i18next::translator: missingKey de editor unlock_page_margins unlock_page_margins

这是我的 package.json 中用于在本地启动故事书的脚本。

    "storybook": "start-storybook -s ./public -p 6006",

故事书尚未设置为在网站上查看。

当我运行开发服务器时,翻译工作,只是在故事书中它不起作用。我按照本指南进行设置:https://dev.to/justincy/using-next-i18next-in-storybook-3he9

【问题讨论】:

【参考方案1】:

我安装了这个包:https://www.npmjs.com/package/i18next-http-backend

然后在我的i18n.js 文件中,添加后端。

import i18n from 'i18next';
import  initReactI18next  from 'react-i18next';
import HttpApi from 'i18next-http-backend';

i18n
  .use(HttpApi)
  .use(initReactI18next).init(
    fallbackLng: 'de',
    debug: true,
);

export default i18n;

现在我的故事书中得到了翻译。

【讨论】:

以上是关于next-i18next 翻译在故事书中不起作用,控制台日志丢失键的主要内容,如果未能解决你的问题,请参考以下文章

Next-i18Next 在 NextJS 中阻塞全局状态

获取当前语言 next-i18next

Next-i18next 初始语言环境参数未传递到 serverSideTranslations

next-i18next 单元测试错误“无法读取未定义的属性语言”,带有链接和玩笑

Nextjs 动态路由与 next-i18next 构建错误

MUI v5 + Storybook:主题和字体系列在 Storybook 中不起作用