0

我按照文档的步骤进行操作,但是当我尝试使用useTranslation函数时,翻译过程不会发生。

发生在 next-i18next 版本 8.6.0

重现_app文件的步骤

import React, { useEffect } from 'react'
import { appWithTranslation } from 'next-i18next'
import Layout from '../Containers/Layout'
import Snack from '../Components/Snack'
import { Provider, useSelector, useDispatch } from 'react-redux'
import { compose } from 'redux'
import { getCookieFromBrowser } from '../utils/cookie'
import { store, persistor } from '../redux/store'
import { PersistGate } from 'redux-persist/integration/react'
import Loading from '../Components/Loading/index'
import { removeError } from '../redux/error'
import { showSnack } from '../redux/snack'
import { getUser, logOut } from '../redux/auth'
import PrivateRoute from '../Components/PrivateRoute/PrivateRoute'
import wrapper from '../redux/reduxWrapper'
    
const MyApp = ({ Component, pageProps }) => {
    const dispatch = useDispatch()
    const error = useSelector<any, any>((state) => state.error?.error)
    const snack = useSelector<any, any>((state) => state.snack?.snack)
    const usuario = useSelector<any, any>((state) => state.usuario?.usuario)
    
    const rotasProtegidas = ['/usuario/pagamentos', '/usuario/meus-anuncios', '/usuario/manter-anuncio/criar-anuncio', '/usuario/conta']
    
    useEffect(() => {
        if (error) {
            dispatch(showSnack('error', error.message))
            dispatch(removeError())
        }
    }, [error])
    
    useEffect(() => {
        const token = getCookieFromBrowser('token')
        if (token) dispatch(getUser(token))
    }, [usuario])
    
    return (
        <>
            <PersistGate loading={} persistor={persistor}>
            <Component {...pageProps} />
            {snack && }
        </>
    )
}
    
MyApp.getInitialProps = async ({ Component, ctx }) => {
    return {
        pageProps: Component.getInitialProps ? await Component.getInitialProps(ctx) : {}
    }
}
    
export default compose(appWithTranslation, wrapper.withRedux)(MyApp)

我的页面,翻译过程不起作用。

import React from 'react'
import Anuncio from './Anuncio'
import FormularioAnuncio from '../../../Containers/Anuncio/formulario-anuncio'
import { requirePageAuth } from '../../../utils/withAuthServerSide'
import { GetServerSideProps } from 'next'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import { useTranslation } from 'next-i18next'
    
export const getServerSideProps: GetServerSideProps = requirePageAuth(async (context) => {
    const novoAnuncio = {
        ano: '',
        cambio: '',
        carroceria: '',
        cidade: '',
        cilindrada: '',
        combustivel: '',
        cor: '',
        descricao: '',
        estado: {},
        estilo: '',
        marca: '',
        marcaId: '',
        modelo: '',
        motor: '',
        preco: '',
        quilometragem: '',
        sobrealimentado: '',
        suspencao: '',
        items: {
            airbag: false,
            alarme: false,
            arQuente: false,
            regulagemDeAltura: false,
            computadorDeBordo: false,
            controleDeTracao: false,
            desembacadorTraseiro: false,
            arCondicionado: false,
            esconstoDeCabecaTraseiro: false,
            abs: false,
            limpadorTraseiro: false,
            radio: false,
            retrovisoresEletrico: false,
            rodasLigaLeve: false,
            sensorDeChuva: false,
            sensorDeEstacionamento: false,
            tetoSolar: false,
            retrovisorFotocromico: false,
            travasEletricas: false,
            vidrosEletricos: false,
            bancoEmCouro: false,
            farolDeXenonio: false,
            gps: false
        }
    } as Anuncio
    
    return {
        props: {
            anuncio: novoAnuncio,
            ...(await serverSideTranslations(context.locale, ['common']))
        }
    }
})

const CriarAnuncio = (props) => {
    console.log('props ', props)
    const { t } = useTranslation('common')
    
    return (
        <div> {t('test')} </div>
    )
}

export default CriarAnuncio

我不知道我能做些什么来解决这个问题。

4

0 回答 0