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> 
}