Javascript 使用阵列对Intl:I18n进行反应
我目前正在一个网站上工作,该网站从两个json文件(de.json和en.json)中读取数据。 现在还有一个页面,根据选择的语言,我需要从英语数组或德语数组中读取数据(每个数组当前是一个简单的js文件,其中只有数组,它只是导入到我需要读取其数据的文件中)。它现在的工作方式是我检查区域设置是否为英语,然后使用该数组,但是该解决方案并不干净Javascript 使用阵列对Intl:I18n进行反应,javascript,reactjs,react-intl,Javascript,Reactjs,React Intl,我目前正在一个网站上工作,该网站从两个json文件(de.json和en.json)中读取数据。 现在还有一个页面,根据选择的语言,我需要从英语数组或德语数组中读取数据(每个数组当前是一个简单的js文件,其中只有数组,它只是导入到我需要读取其数据的文件中)。它现在的工作方式是我检查区域设置是否为英语,然后使用该数组,但是该解决方案并不干净 const ResourcesMedia = [ { title: 'sometitle', description:
const ResourcesMedia = [
{
title: 'sometitle',
description: 'somedescription',
href: 'somelink'
},
{
title: 'sometitle',
description: 'somedescription',
href: 'somelink'
}
]
export default ResourcesMedia;
还有另一个类似的阵列,只适用于德语版本。现在,根据选择的语言,我将通过数组映射并创建组件。但是,目前我正在检查区域设置是什么样的:
const mediaArray = locale === 'en' ? ResourcesMediaEn : ResourcesMedia
这不是最好的方法,相反,我希望将数组同时存储在en.json和de.json文件(或两个新文件)中,并让IntlProvider决定应该使用哪个。使用React Intl是否有一种很好的方法,或者我是否需要实现它?您可以创建一个数组,其中数组中的值是键而不是实际的字符串,在渲染它们时,您可以实际转换这些值
const ResourcesMedia = [
{
title: 'sometitleKey',
description: 'somedescriptionKey',
href: 'somelink'
},
{
title: 'sometitleKey1',
description: 'somedescriptionKey',
href: 'somelink'
}
]
render() {
const {intl: {formatMessage: t}} = this.props;
return ResourcesMedia.map(item => (
<div>
<div>{t(item.title)</div>
<div>{t(item.description)</div>
<div>
))
}
const ResourcesMedia=[
{
标题:“sometitleKey”,
描述:“somedescriptionKey”,
href:'somelink'
},
{
标题:“sometitleKey1”,
描述:“somedescriptionKey”,
href:'somelink'
}
]
render(){
const{intl:{formatMessage:t}}=this.props;
返回ResourcesMedia.map(项目=>(
{t(项目名称)
{t(项目说明)
))
}
非常感谢您的回答,但您在渲染时进行翻译到底是什么意思?我应该将两种语言存储在一个文件中吗?我的意思是,在您的数据文件中,只存储字符串的键,并将这些键添加到传递给Intlprovider的任何顶级文件中。非常感谢