问题描述
我使用 next-i18next
进行翻译。 <rootDir>/public
目录内是我的翻译 *.json 文件。
"next": "^10.0.2","next-i18next": "^8.1.1",
我的 Cypress 测试在运行我的生产包时失败,因为找不到完整的文本字符串。它只显示翻译键的值:t('someKey')
。
module.exports = {
i18n: {
defaultLocale: 'en',locales: ['en'],},localePath: path.resolve('./public/static/locales'),};
const defaultConfig = {
i18n,redirects: require('./next-redirects'),}
_app.js:
function MyApp({ Component,pageProps }) {
/// snipped
}
export default appWithTranslation(MyApp);
export const SearchPage = () => {
const router = useRouter();
const { t } = useTranslation('search');
// snipped //
return (
<>
<Head>
<title>{`${t('searchTitle')}`}</title>
<Meta
property="og:title"
content={`${t('searchTitle')}`}
key="title"
/>
<Meta
name="description"
content={t('MetaDescription')}
/>
</Head>
<ItemsContext.Provider
value={{snipped}}>
<Search />
</ItemsContext.Provider>
</>
);
};
SearchPage.namespace = 'SearchPage';
export const getServerSideProps = async ({ locale }) => ({
// exposes `_nextI18Next` as props which includes our namespaced files
props: {
...await serverSideTranslations(locale,['common','search']),}
});
export default SearchPage;
使用的命令:
"dev": "next dev","build": "next build","start": "next start","cypress.test": "npx cypress run",
运行 yarn build && yarn start && yarn cypress.test
将输出:
如果我尝试在本地机器上使用 yarn build
复制失败,则翻译没问题。
来自关于静态文件服务的 nextJS docs:
注意:Next.js 只会提供构建时位于公共目录中的资产。在运行时添加的文件将不可用。我们建议使用第三方服务(如 AWS S3)进行持久文件存储。
似乎 serverSideTranslations 函数可能被视为运行时 - 因为我的页面在与动态路径 URL 相关时不是预先构建的。
请就 serverSideTranslation 考虑运行时与构建时提供建议?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)