我不确定您的翻译是如何准确组织的,但我在常量翻译方面遇到了类似的情况,我找到了适合我的解决方案。如果你有键值翻译格式的翻译文件,你可以使用它。
所以你有这样的常量文件:
export default [
{
id: 1,
label: 'Cat'
},
{
id: 2,
label: 'Dog'
}
]
并翻译此值:
{
"Animal.title": {
"en-uk": "Animals",
"da-dk": "Dyr"
},
"Animal.cat": {
"en-uk": "Cat",
"da-dk": "Kat"
},
"Animal.dog": {
"en-uk": "Dog",
"da-dk": "Hund"
}
}
而且你有 HOC 为你提供translate
了你需要翻译的方法和 MyComponent(不确定它是如何在你的应用程序中实现的,但我想它是这样的)。
import Animals from './constants/animals'
class MyComponent extends React.Component {
render() {
const { translate } = this.props
return (
<div>
{translate('Animal.title')}
{Animals.map(animal => (
<Animal
id={animal.id}
name={animal.label}
/>
)}
</div>
)
}
}
translate('MyComponent')(MyComponent);
所以现在我们已经翻译了 MyComponent 但有一个问题 - 来自纯 js 文件的常量没有被翻译。在这种情况下,我只看到一种解决方案 - 以这种方式重写常量:
export default [
{
id: 1,
label: 'Animal.cat'
},
{
id: 2,
label: 'Animal.dog'
}
]
我们用翻译键替换了标签,所以现在我们可以更改 MyComponent 来翻译标签:
class MyComponent extends React.Component {
render() {
const { translate } = this.props
return (
<div>
{translate('Animal.title')}
{Animals.map(animal => (
<Animal
id={animal.id}
name={translate(animal.label)}
/>
)}
</div>
)
}
}