我不确定您的翻译是如何准确组织的,但我在常量翻译方面遇到了类似的情况,我找到了适合我的解决方案。如果您有键值转换格式的翻译文件,您可以使用它。
所以你有这样的常量文件:
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>
)
}
}