0

下一个翻译是显示键而不是 lang common:menu.1.title common:read_more

i18n.js

module.exports = {
    locales: ['en', 'de', 'cs'],
    defaultLocale: 'en',
    redirectToDefaultLang: true,
    pages: {
        '*': ['common'],
        '/404': ['home'],
        '/': ['home'],
        '/about': ['about'],
    },
    interpolation: {
        prefix: '${',
        suffix: '}',
    },
    logger: true,
    logBuild: true,
    loadLocaleFrom: (locale, namespace) =>
        import(`./public/locales/${locale}/${namespace}`).then((m) => m.default),
}

这是我的 next.config.js

const nextTranslate = require('next-translate')

module.exports = nextTranslate()

_app.js

import I18nProvider from 'next-translate/I18nProvider';
class MyApp extends App {
    render () {
        const { Component, pageProps, store } = this.props

        return (

                <I18nProvider lang={'en'} >
                    <Component {...pageProps} />
                    <GoTop scrollStepInPx="50" delayInMs="16.66" />
                </I18nProvider>
            );
        }
    }


export default MyApp

并遵循 HOC

import React, {Component} from "react";
import withTranslation from 'next-translate/withTranslation'

class NavBarLink extends Component {
    render() {
        const { t, lang } = this.props.i18n
        const description =  t('menu.1.title')
        const description2 =  t('read_more')

        return <p>{description + ' '+ description2}</p>
    }
}

export default withTranslation(NavBarLink, 'common')

返回值是 common:menu.1.title common:read_more

请有人能告诉我我的代码中缺少什么吗?

4

1 回答 1

0

在新版本的 next-translate 中,不需要像这里所说的那样提供 I18nProvider 。

但是当你提供你应该提供你想要使用的所有命名空间时。

你最好看看这个迁移指南。

于 2021-06-15T14:41:54.057 回答