Ros*_*hdy 1 deployment path reactjs webpack react-i18next
我搜索了很多帖子,但都没有解决我的构建问题。
我有两个主要问题
结构如下所示:
my-app
public
images
image.jpg
locale
xx
xxx.json
src
Run Code Online (Sandbox Code Playgroud)
和背景图片网址一样url(/images/image.jpg),
该 url 在开发人员上运行良好,但在生产/构建后,它是相对于/路径的,无论homepage设置如何package.json
语言环境文件也是如此。
PS:homepage不会/,假设会/myapp/
我的 i18n 文件是这样的:
i18n
use(Backend)
Run Code Online (Sandbox Code Playgroud)
我试图将后端设置设置为任何内容 ( __dirname | env.PUBLIC_URL,...etc),但没有任何效果。
这似乎是一个非常普遍的问题,因为我到处都发现了很多关于它的帖子,但是,在运行时如何正确设置相对路径并没有明确的答案 npm run build
如果您有知识,请为傻瓜式答案提供分步指南。
我设法使用以下设置使其工作:
结构:
??? public
| ??? locales
| ??? ar
| | ??? errors.json
| | ??? general.json
| | ??? warnings.json
| ??? en
| | ??? errors.json
| | ??? general.json
| | ??? warnings.json
??? src
| ??? App.js
| ??? i18n.js
Run Code Online (Sandbox Code Playgroud)
i18n.js
import i18n from 'i18next';
import Backend from 'i18next-xhr-backend';
import LanguageDetector from 'i18next-browser-languagedetector';
i18n
// load translation using xhr -> see /public/locales
.use(Backend)
// detect user language
.use(LanguageDetector)
.init({
fallbackLng: 'en',
debug: false,
defaultNS: 'general',
ns: ['general', 'errors', 'warnings'],
backend: {
loadPath: `${window.location.pathname}locales/{{lng}}/{{ns}}.json`
},
load: 'unspecific',
// special options for react-i18next
// learn more: https://react.i18next.com/components/i18next-instance
react: {
wait: true
}
});
export default i18n;
Run Code Online (Sandbox Code Playgroud)
成分
根据需要为每个组件包含命名空间(除“ defaultNS”配置之外的任何内容)
class MyComponent extends React.Component{...}
export default withNamespaces('general', 'errors')(MyComponent)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |