reactjs - 不断收到错误 MissingTranslationId
问题描述
注意:这个问题只与图书馆有关,
react-localize-redux
但我还不能为它创建标签。
我想使用 allLanguages 格式。所以我创建了一个名为 .json 的文件global.json
,如下所示:
{
"header": {
"toggleNavigation": [
"Cambiar navegación",
"Toggle navigation"
],
"home": [
"Inicio",
"Home"
],
"company": [
"Compañía",
"Company"
]
}
}
我决定在我的 Root 组件中实现所有内容,如下所示:
...
import allTranslations from "../translations/global.json";
...
class Root extends Component {
constructor(props) {
super(props);
this.props.initialize({
languages: [
{ name: "Spanish", code: "es" },
{ name: "English", code: "en" }
],
translation: allTranslations,
options: {
renderToStaticMarkup
}
});
this.props.addTranslation(allTranslations); // just to make sure it's loading the json dictionary
this.props.setActiveLanguage("es"); // Although Spanish was added first in the list of languages, I want to make sure the active language is Spanish
}
render() {
const { store, history } = this.props;
return (
<LocalizeProvider>
<Provider store={store}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>
</LocalizeProvider>
);
}
}
Root.propTypes = {
...
};
export default withLocalize(Root);
然后,在一个名为 Header 的无状态控制器中,我想通过库的 Translate 组件使用本地化。
import React from 'react';
import PropTypes from 'prop-types';
import { Translate } from "react-localize-redux";
const Header = (props) => {
return (
<div className="header-container">
...
...
<ul className="nav navbar-nav navbar-right">
<li className="menu-item">
<a href="#one-page-home">
<Translate id="header.home" />
</a>
</li>
</ul>
...
...
</div>
);
};
Header.propTypes = {
...
};
export default Header;
我收到错误:Missing TranslationId: header.home for language: ${ languagecode }
我已经按照文档进行操作,但我不知道我做错了什么。
有什么帮助吗?这个伟大图书馆的精通用户一眼就能看出什么问题?
react
版本 16.4.2 和react-localize-redux
版本 3.4.1
解决方案
也许,至少是我的情况,我没有用<LocalizeProvider>
ReactDom.render(
<Provider store={store}>
<LocalizeProvider initialize={{
languages: [
{ name: "English", code: "en" },
{ name: "Spanish", code: "es" }
],
translation: { home: ['hello', 'alo'] },
options: {
defaultLanguage: "en",
renderToStaticMarkup: renderToStaticMarkup
}
}}>
<BrowserRouter>
<Switch>
<Route exact path="/login" children={(props) => <Login {...props} /> } />
<Route exact path="/dashboard" children={(props) => <Dashboard {...props} /> } />
<Route exact path="/" children={(props) => <Home {...props} />} />
</Switch>
</BrowserRouter>
</LocalizeProvider>
</Provider>, document.getElementById('root')
);
而不是这个:
ReactDom.render(
<Provider store={store}>
<LocalizeProvider initialize={{
languages: [
{ name: "English", code: "en" },
{ name: "Spanish", code: "es" }
],
translation: { home: ['hello', 'alo'] },
options: {
defaultLanguage: "en",
renderToStaticMarkup: renderToStaticMarkup
}
}}>
<BrowserRouter>
<Switch>
<Route exact path="/login" children={(props) => <Login {...props} /> } />
<Route exact path="/dashboard" children={(props) => <Dashboard {...props} /> } />
<Route exact path="/" children={(props) => <Home {...props} />} />
</Switch>
</BrowserRouter>
</LocalizeProvider>
</Provider>, document.getElementById('root')
);
推荐阅读
- c# - Braintree - 在 Xamarin 表单 C# 中检索付款方式 Nonce
- c# - 在 azure blob 存储中上传文件
- java - Java 休息 API | Linux | HTTPS 443 连接被拒绝 | 代码在本地工作正常,但在服务器上不工作 | Ping 返回正常
- javascript - expressjs http post 无法从 javascript post fetch 获取数据
- python - Python POST 请求设置格式
- javascript - 如何在 Blogger 博客主页中制作条纹帖子背景颜色?
- php - 如何在 PHP 7.4 (xampp 3.2.2) 中安装扩展?
- delphi - 使用 Delphi 10.2 实施 ADFS SSO
- spring - 如何在 MariaDB 中批量插入?
- regex - 正则表达式在管道分隔之前捕获字母数字