I\xc2\xb4m 正在寻找通过 next-translate 将静态文本加载到故事书中的方法。
\n我的代码看起来像这样,但它 \xc2\xb4s 加载我的语言环境文件,但没有正确编写它们。
\n这是故事书预览.js:
\nimport '../src/styles/global/global.scss';\n\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { ThemeProvider } from '@material-ui/core/styles';\nimport theme from '../src/utils/theme';\nimport I18nProvider from 'next-translate/I18nProvider';\n\nimport commonCS from '../locales/cs/common.json';\n\nexport const decorators = [(Story) => themeDecorator(Story)];\n\nconst themeDecorator = (Story) => {\n console.log(commonCS.homepage_title);\n return (\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <I18nProvider lang={'cs-CS'} namespaces={{ commonCS }}>\n <Story />\n </I18nProvider>\n </ThemeProvider>\n );\n};\n\nexport const parameters = {\n actions: { argTypesRegex: '^on[A-Z].*' },\n controls: { expanded: true },\n};\nRun Code Online (Sandbox Code Playgroud)\n这是我的故事书故事:
\nimport React from 'react';\nimport HeaderContact from './HeaderContact';\nimport I18nProvider from 'next-translate/I18nProvider';\nimport useTranslation from 'next-translate/useTranslation';\nimport commonCS from '../../../locales/cs/common.json';\n\nexport default {\n title: 'HeaderContact',\n component: HeaderContact,\n};\n\nexport const Basic = () => {\n const { t } = useTranslation('common');\n return (\n <HeaderContact\n link="mailto:info@numisdeal.com"\n text={t('homepage_title')}\n />\n );\n};\nRun Code Online (Sandbox Code Playgroud)\n我的本地文件common.json:
\n{\n "homepage_title": "Blog in Next.js",\n "homepage_description": "This example shows a multilingual blog built in Next.js with next-translate"\n}\nRun Code Online (Sandbox Code Playgroud)\n和我的翻译配置 i18n.json
\n{\n "locales": ["cs", "en", "de"],\n "defaultLocale": "cs",\n "pages": {\n "*": ["common"]\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我非常乐意提供帮助。\n谢谢!\nRoman
\n这是解决方案。
预览.js
import '../src/styles/global/global.scss';
import CssBaseline from '@material-ui/core/CssBaseline';
import { ThemeProvider } from '@material-ui/core/styles';
import theme from '../src/utils/theme';
import I18nProvider from 'next-translate/I18nProvider';
import commonCS from '../locales/cs/common.json';
export const decorators = [(Story) => themeDecorator(Story)];
const themeDecorator = (Story) => {
console.log(commonCS.homepage_title);
return (
<ThemeProvider theme={theme}>
<CssBaseline />
<I18nProvider lang={'cs'} namespaces={{ common: commonCS }}>
<Story />
</I18nProvider>
</ThemeProvider>
);
};
export const parameters = {
actions: { argTypesRegex: '^on[A-Z].*' },
controls: { expanded: true },
};
Run Code Online (Sandbox Code Playgroud)
故事:
import React from 'react';
import HeaderContact from './HeaderContact';
export default {
title: 'HeaderContact',
component: HeaderContact,
};
export const Basic = () => {
return <HeaderContact link="mailto:info@numisdeal.com" />;
};
Run Code Online (Sandbox Code Playgroud)
成分:
import React from 'react';
import AlternateEmailIcon from '@material-ui/icons/AlternateEmail';
import useTranslation from 'next-translate/useTranslation';
import styles from './HeaderContact.module.scss';
export interface IHeaderContact {
link: string;
text?: string;
}
export default function HeaderContact(props: IHeaderContact) {
const { link, text } = props;
const { t } = useTranslation('common');
const preklad = t('homepage_title');
return (
<a href={link} className={styles.headerLink}>
<AlternateEmailIcon fontSize="small" />
<span>
{/* {text} */}
{preklad}
</span>
</a>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1649 次 |
| 最近记录: |