0

我正在尝试为我的反应应用程序找到最佳翻译的概念。常量文件反应的翻译

我有翻译高阶组件,并通过使用它:

export default translate('MyComponent')(MyComponent); 

和部件我可以通过道具的所有文本里面 - 它工作正常,我。

但是,我有很多纯JavaScript文件常量,也需要一个tranlations那里。例如存在验证架构的错误消息,或者constats与选择元素,如:

export default [ 
    { 
     value: 'aaa', 
     label: 'bbb', // want to translate this label 
    } 
]; 

什么是在反应程序转化纯js文件的最好aproch?

+0

假设你使用的是全局存储像终极版/相似的,我会去与调度的动作有每当语言更改,然后使用该Redux存储库状态确定您的区域设置索引返回的内容。例如,您可以创建一些语言环境文件'en.js,it.js'等,导入这些文件,然后使用带有Redux存储状态的switch语句来确定要返回哪个语言环境对象。 – SamHH

+0

你检查了react-intl吗? –

+0

@DhavalPatel是的,我检查了,但我不知道如何使用它在纯粹的js文件使用翻译从REDEX店 – marcint339

回答

0

我对这个问题感到困惑,但会像这样的工作?

Constants.js

export default { 
    error: { 
     value: 'aaa', 
     label: 'bbb', // want to translate this label 
    } 
}; 

然后,在一个组件可以解构它像

import Constants from './Constants.js'; 
const { error } = Constants; 
... 
render(){ 
    return <span>{`Error: ${error.label}`}</span> 
} 

假设仅存在一个等时所提供的示例误差容器。

1

看起来像你使用i18next(translate hoc)。

只需导入i18next上的文件,并直接使用T:

import i18next from 'i18next'; 
export default { 
    error: { 
     value: 'aaa', 
     label: i18next.t('yourKey'), // want to translate this label 
    } 
}; 

不过还好会在组件内部进行翻译 - 所以翻译能适应语言的变化。所以,我认为做什么大通建议将是最好的选择:

export default { 
    error: { 
     value: 'aaa', 
     key: 'bbb', // use it as key for t call 
    } 
}; 

组件

import Constants from './Constants.js'; 
const { error } = Constants; 

... 


render(){ 
    const { t } = this.props; 
    return <span>{${t(error.key)}}</span> 
}