我不明白,为什么这段代码在 pwa-studio 中不起作用。我试图找到解决问题的方法,但没有找到关于这个主题的任何内容。
我已将 i18n 导入 index.js。它适用于一个简单的 React 应用程序,但它不适用于 PWA Studio。也许我错误地连接了它,或者我以错误的方式放置了带有翻译的文件。目前,我无法了解它在 PWA Studio 中是如何工作的。
i18n.js 文件
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
// the translations
// (tip move them in a JSON file and import them)
const resources = {
en_US: {
translation: {
"Welcome to React": "Welcome to React and react-i18next"
}
}
};
i18n
.use(initReactI18next) // passes i18n down to react-i18next
.init({
resources,
lng: "en",
keySeparator: false, // we do not use keys in form messages.welcome
interpolation: {
escapeValue: false // react already safes from xss
}
});
export default i18n;
我的自定义组件并包括翻译它们:
import React, { Suspense } from 'react';
import {mergeClasses} from "@magento/venia-ui/lib/classify";
import defaultClasses from './socials.css';
import Buttons from "./buttons";
import { useTranslation } from 'react-i18next';
const Socials = props => {
const classes = mergeClasses(defaultClasses, props.classes);
const { t, i18n } = useTranslation();
return (
<div className={classes.block}>
<div className={classes.auth}>
<div className={classes.top}>
Welcome back to React
**<h1>{t('Welcome to React')}</h1>**
</div>
<span className={classes.bottom}>
Log in with a single react account.
</span>
</div>
<Buttons innerText='enter' />
<span className={classes.or}>or</span>
</div>
);
};
export default Socials;