我有一个Item {
title {
de
fr
pa
}
}
类型。我希望将其标题翻译成可变数量的语言。我想象的是这样的结构:
GraphQLString
管理界面需要加载所有标题以进行编辑,并可选择添加新标题。换句话说,我正在寻找一个'dict'。
我现在能够解决这个问题的唯一方法是使用<div class="parent">
<span class="random">
<span class="child">
并将语言字符串编码为JSON对象。
还有另一个,还是应该有?
答案 0 :(得分:1)
您可以创建一个表示本地化字符串的类型:
const LocalizedStringType = new GraphQLObjectType({
name: 'LocalizedString',
description: 'A value object that represents a string and a language code',
fields: () => ({
languageCode: {type: GraphQLString},
value: {type: GraphQLString},
}),
});
然后公开这种类型的对象列表:
const ItemType = new GraphQLObjectType({
name: 'Item',
fields: () => ({
localizedTitles: {type: GraphQLList(LocalizedStringType)}
}),
});
在您的容器中,您可以按此操作此列表:
class Item extends React.Component {
state = {language: 'en'};
render() {
const title = (
this.props.item.localizedTitles.find(localizedString =>
localizedString.languageCode === this.state.language
) ||
`**Title missing for language with code ${this.state.language}**`
);
return <h1>{title}</h1>;
}
}
Item = Relay.createContainer(Item, {
fragments: {
item: () => Relay.QL`
fragment on Item {
localizedTitles {
languageCode
value
}
}
`,
},
});
答案 1 :(得分:0)