Reactjs react-i18next每个组件的转换

Reactjs react-i18next每个组件的转换,reactjs,i18next,Reactjs,I18next,我正在使用react-i18next。问题是它希望是我应用程序外部的包装。我无法将其包装在组件本身中,因为这将触发错误 甚至可以运行该提供程序的多个实例吗?因为我有大约12个可重用组件,我想提供多语言支持。既然我想处理这些组件本身的翻译(如果可能的话),我应该如何处理呢 我现在遇到的问题是,给我的错误是没有设置选项。我想这是因为我想在外部组件级别进行转换,组件在内部进行渲染。不过,中间包装器组件可以在这里完成 从“React”导入React; 从'react redux'导入{connect};

我正在使用react-i18next。问题是它希望
是我应用程序外部的包装。我无法将其包装在组件本身中,因为这将触发错误

甚至可以运行该提供程序的多个实例吗?因为我有大约12个可重用组件,我想提供多语言支持。既然我想处理这些组件本身的翻译(如果可能的话),我应该如何处理呢

我现在遇到的问题是,给我的错误是没有设置选项。我想这是因为我想在外部组件级别进行转换,组件在内部进行渲染。不过,中间包装器组件可以在这里完成

从“React”导入React;
从'react redux'导入{connect};
从“@my/react ui elements”导入{Form,Button,Input};
从“../../actions/index”导入{authenticateUser};
从'react-i18next'导入{translate};
从'react-I18nextProvider'导入{I18nextProvider};
从“../../i18n”导入i18n;
常量样式={
包装器:{
填充:“30px 20px”,
背景:“#fff”,
边界半径:“3px”,
边框:“1px实心”
},
副标题:{
不透明度:0.3
}
};
@连接(存储=>{
返回{
配置:store.config.components.Authentication,
加载:store.authentication.loginform\u加载,
errorMessage:store.authentication.loginform\u errorMessage,
forgotpasswordEnabled:store.config.components.Authentication.forgotpassword\u已启用
};
})
@翻译(['common'],{wait:false})
类LoginForm扩展了React.Component{
构造函数(){
超级();
此.state={
用户名:null,
密码:null
};
this.handleForm=this.handleForm.bind(this);
}
手模(e){
e、 预防默认值();
this.props.dispatch(authenticateUser(this.state.username,this.state.password));
}
render(){
const{t}=this.props;
//忘记密码
var forgotPassword=null;
if(this.props.forgotpasswordEnabled){
放弃密码=
忘记密码
;
}
//全要素
返回(
{t('Login')}
{this.props.errorMessage}

this.setState({username:e.target.value})label='username'/> this.setState({password:e.target.value})type='password'label='password'/> 登录 {放弃密码} ); } } 导出默认登录信息;
如果使用i18nextProvider,最内部的将设置上下文。规则必须嵌套在提供程序中

备选方案:不要使用i18nextProvider。您还可以将i18next实例作为道具传递给translate hoc:

或者在选项中传递它:

@translate(['common'],{wait:false,i18n:i18n})

或者全局设置一次:

translate.setI18n(i18n)


非常好,谢谢!我还有一个关于翻译组件的问题。您应该如何处理每个组件的翻译,所有这些组件都可以附带默认翻译。总的来说,应用程序的实现应该能够覆盖翻译本身。当然,默认翻译是指只提供回退语言或每种语言的文本?对于回退,您可以在t选项中使用:defaultValue:对于多种语言,我建议使用,您可以通过添加“默认”翻译来添加“默认”翻译。我了解回退,但我有10个组件。我想用法语/德语/英语发货。所有这些都翻译得很好,效果很好。但是现在我在一个应用程序中为一个客户实现它们,我的客户想要一个特定的其他翻译。如果可能的话,如何处理呢?最终一切都有可能…i18next最终解析一个密钥…每个密钥或翻译文件都可以使用其中一个函数覆盖,或者通过xhr后端加载不同的文件,但扫描时如何扫描所有源?由于源代码位于node_模块的文件夹中,我当然不想硬编码